PDA

View Full Version : سوال: تبدیل رشته به متن رمزی



sadaf_
دوشنبه 02 آبان 1390, 17:28 عصر
با چه دستوری می شه متن رو به صورت رمزی تبدیل کرد و در دیتابیس ذخیره کرد و برای بارگذاری مجدد اون رو به حالت اولیه برگردانیم
البته غیر از روش gethashcode
ممنون

programer-ir
دوشنبه 02 آبان 1390, 18:23 عصر
خوب خودت با یک الگوریتم تبدیل به رمزش کنی بعد ذخیرش کنی......

ali_habibi1384
سه شنبه 03 آبان 1390, 02:03 صبح
خوب خودت با یک الگوریتم تبدیل به رمزش کنی بعد ذخیرش کنی......
اين دوستمون ميخواد بغير از hash كردن باشه توي تاپيكش هم گفته بخواد الگوريتم بنويسه تبديل كنه كه باز همون ميشه!

gwbasic
سه شنبه 03 آبان 1390, 09:23 صبح
encrypt رو جستجو کنید

sadaf_
پنج شنبه 05 آبان 1390, 09:22 صبح
من این کد رو از این سایت پیدا کردم
مرحله اول که تبدیل رشته به متن رمزی است درست کار می کنه



/// <summary>
/// رمز گذاری رشته
/// </summary>
/// <param name="Message">متن برای کدشدن</param>
/// <param name="Passphrase">کلید کد شدن </param>
/// <returns></returns>
public string MH_Security_EncryptString(string Message, string Passphrase)
{
byte[] Results;
if (Passphrase == "")
{
Passphrase = "Simpa_Salt";
}
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Step 1. We hash the passphrase using MD5
// We use the MD5 hash generator as the result is a 128 bit byte array
// which is a valid length for the TripleDES encoder we use below
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase) );
// Step 2. Create a new TripleDESCryptoServiceProvider object
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
// Step 3. Setup the encoder
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
// Step 4. Convert the input string to a byte[]
byte[] DataToEncrypt = UTF8.GetBytes(Message);
// Step 5. Attempt to encrypt the string
try
{
ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
}
finally
{
// Clear the TripleDes and Hashprovider services of any sensitive information
TDESAlgorithm.Clear();
HashProvider.Clear();
}
// Step 6. Return the encrypted string as a base64 encoded string
return Convert.ToBase64String(Results);
}



اما برای بازیابی رشته درست کار نمی کنه و erroe می ده لطفا راهنمایی کنید




/// <summary>
/// برگرداندن رمزنگاری
/// </summary>
/// <param name="Message">متن کد شده</param>
/// <param name="Passphrase">کلید کد</param>
/// <returns></returns>
public string MH_Security_DecryptString(string Message, string Passphrase)
{
byte[] Results;
if (Passphrase == "")
{
Passphrase = "Simpa_Salt";
}
System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
// Step 1. We hash the passphrase using MD5
// We use the MD5 hash generator as the result is a 128 bit byte array
// which is a valid length for the TripleDES encoder we use below
MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase) );
// Step 2. Create a new TripleDESCryptoServiceProvider object
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
// Step 3. Setup the decoder
TDESAlgorithm.Key = TDESKey;
TDESAlgorithm.Mode = CipherMode.ECB;
TDESAlgorithm.Padding = PaddingMode.PKCS7;
// Step 4. Convert the input string to a byte[]
byte[] DataToDecrypt = Convert.FromBase64String(Message);
// Step 5. Attempt to decrypt the string
try
{
ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
}
finally
{
// Clear the TripleDes and Hashprovider services of any sensitive information
TDESAlgorithm.Clear();
HashProvider.Clear();
}
// Step 6. Return the decrypted string in UTF8 format
return UTF8.GetString(Results);
}