سلام. من رشته اتصال به بانک اطلاعاتی رو قراره برای بالاتر بردن امنیت آن رمزنگاری کنم که اگر کسی دسترسی پیدا کرد با مفاهیم نامفهومی مواجه بشه. خب این خیلی برای امنیت نرم افزارم خوبه اما سوالم اینه که الگوریتم های رمزنگاری تقریبا مشخصی داریم که اینکارو میکنن مثل md5 و aes و ...
اگر مثلا رشته ای که حاوی اطلاعات اتصال به sql server هست رو با یک کلیدی مثلا @1234 با الگوریتم AES رمزنگاری کنم در خود نرم افزار هم باید این کلید رو جایی ثبت کنم که با همین کلید این رشته رمز رو DECOD کنم پس کسی که کمی خبره باشه با دسترسی به سورس نرم افزار (با برخی از برنامه ها اینکارو انجام میدن) به کلید رمز دسترسی پیدا میکنه
با داشتن کلید رمز و چندتا آزمون و خطای ساده الگوریتم های مختلف رشته اتصال منو میفهمه
پس واقعا چاره کار چجوری باید باشه ؟
با salt هم که چیزی اگه به اطلاعات رمز شده اضافه کنیم خب همون salt هم باید یجایی در برنامه یا ... ذخیره کنیم و قابل هک هست یا اصلا روش کار salt رو درست متوجه نشدم اگر راهنمایی کنید ممنون
ممنون
سلام
یکی از بهترین راه ها این هست که شما یه random key به ازای ثبت هر پیام درست کنید که داخل دیتابیس ذخیره شده باشه و به ازای هر درخواست یا مجموعه از درخواست ها از اون random key استفاده کنید. به نمونه زیر نگاهی بیاندازید:
// Generate this once, then save it.
$key = Crypto::createNewRandomKey();
/*
var_dump(Crypto::binToHex($key));
// then later:
$key = Crypto::hexToBin("the generated hex characters go here");
*/
// To encrypt:
$encrypted = Crypto::encrypt(
"This is what you're trying to protec,",
$key
);
// To decrypt:
$plaintext = Crypto::decrypt(
$encrypted,
$key
);
سپس برای Decrypt کردن دیتاها هم میتونید دقیقا از همون رندوم کی که داخل دیتابیس ذخیره شده استفاده کنید. اینطوری دیگه دیتایی از کلیدها رو در اختیار توسعه دهنده نمیذارید و همه چیز داخل دیتابیس پردازش میشه.
به جمع هزاران کاربر اینستاگرامی روکسو بپیوندید.