PDA

View Full Version : معرفی منابع برای یادگیری انکریپتینگ و دیکریپتینگ



میلاد قاضی پور
شنبه 13 شهریور 1389, 23:36 عصر
سلام . دوستان عزیز خوشبختانه منابع و سورس کدهای همراه با مثال در اینترنت بسیار یافت میشه اما برای اینکه از تمام کلاس ها و متدها هنگام انکریپت کردن بخوام سردر بیارم و الگوریتمهای مورد نظر خودمو جهت این کار پیاده کنم نیاز به یه منبع تئوریک دارم . میخوام مثلا بدونم چرا باید در کدهای آخر پست خط مشخص شده رو توی برنامه داشته باشیم؟



keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key ));



یا چرا اون رشته باید در فایل کانفیگ ذخیره بشه . سوألات بسیار هست که نمیشه برای هرکدومش یه تاپیک جداگونه زد . اگر منابعی میشناسید چه انگلیسی و چه فارسی معرفی کنید که در درک عمیق قضیه کمکم کنه ممنون .


public static string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

System.Configuration.AppSettingsReader settingsReader =
new AppSettingsReader();
// Get the key from config file

string key = (string)settingsReader.GetValue("SecurityKey",
typeof(String));
//System.Windows.Forms.MessageBox.Show(key);
//If hashing use get hashcode regards to your key
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();

//Always release the resources and flush data
// of the Cryptographic service provide. Best Practice

hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)

tdes.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = tdes.CreateEncryptor();
//transform the specified region of bytes array to resultArray
byte[] resultArray =
cTransform.TransformFinalBlock(toEncryptArray, 0,
toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

Salar Ashgi
یک شنبه 14 شهریور 1389, 00:07 صبح
اولا راجب بحث Cryptography و ... میتونید در خود Msdn جستجو کنید ./
ثانیا : وقتی بحث رمز نگاری میاد وسط ، آدم خودش میتونه الگوریتم های متعددی البته بر مبنای یکسری اصول ریاضی و منطق ، طراحی کنه ! مثلا تو همین بخش من یه نمونه شو قرار دادم ، با تابع XOR و کدهای
اسکی ! البته میگم روشهای زیادی هست ، روشهایی که به این آسانی نمیشه Decrypt شون کرد ؛
مثل اعداد اول تصادفی بزرگ که میتونه کلید بسیار زیبایی برای طراحی الگوریتمهای رمزنگاری باشه ، که
البته همین الانشم از این روش تو خیلی الگوریتم ها استفاده میشه !

میلاد قاضی پور
یک شنبه 14 شهریور 1389, 04:37 صبح
بسیار عالی بود . ولی مشکل ام اس دی ان اینه که مفاهیم رو قشنگ شرح نمیده . توضیح کوچیکی میده بعدش کد . من میخوام قشنگ شرح بده که کدوم کلاس کدوم الگوریتم رو پیاده میکنه . چه نوع الگوریتمهایی رایج تر هستن . از کدومها کجا استفاده میشه و ...