PDA

View Full Version : آموزش: Decryp tString & Encrypt کد کردن و دیکد کردن رشته



FirstLine
پنج شنبه 02 تیر 1390, 10:45 صبح
با سلام
برای Decrypt String & Encrypt کد کردن و دیکد کردن رشته یا رمزنگاری متن میتونید از دو تابع زیر استفاده کنید
یک کلید نیز برای کد کردن تعریف شده است کمه میتونید بدلخواه تغییر بدهید





#region "Security"
/// <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);
}

/// <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);
}


#endregion



با تشکر

محمد متاله
جمعه 03 تیر 1390, 03:09 صبح
سلام به همه دوستان

لطفا برای نوشتن و ارسال کدهایتان از # استفاده کنید تا دیگر دوستانتان بتوانند کدهایتان را راحت تر بخوانند.
با تشکر

Modernidea
یک شنبه 20 فروردین 1391, 22:43 عصر
با سلام
برای Decrypt String & Encrypt کد کردن و دیکد کردن رشته یا رمزنگاری متن میتونید از دو تابع زیر استفاده کنید
یک کلید نیز برای کد کردن تعریف شده است کمه میتونید بدلخواه تغییر بدهید





#region "Security"
/// <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 == "")
.....



سلام
عذر میخوام که تاپیک قدیمی رو فعال کردم. کارم به شدت گیره و هرچه جستجو میکنم نتیجه ای نداره.
اول اینکه برای استفاده از این کد باید کلاس زیر را اضافه کنید
using System.Security.Cryptography;
بعد اینکه موقع استفاده از این کد این خطا رو میده:

Invalid length for a Base-64 char array.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Invalid length for a Base-64 char array.

Source Error:

Line 90: Line 91: // Step 4. Convert the input string to a byte[] Line 92: byte[] DataToDecrypt = Convert.FromBase64String(Message); Line 93: Line 94: // Step 5. Attempt to decrypt the string


خیلی راه ها رو امتحان کردم ولی فایده نداشت، لطفا راهنمایی کنید.
با تشکر

si6arp
یک شنبه 20 فروردین 1391, 23:02 عصر
سلام
عذر میخوام که تاپیک قدیمی رو فعال کردم. کارم به شدت گیره و هرچه جستجو میکنم نتیجه ای نداره.
اول اینکه برای استفاده از این کد باید کلاس زیر را اضافه کنید
using System.Security.Cryptography;
بعد اینکه موقع استفاده از این کد این خطا رو میده:

Invalid length for a Base-64 char array.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Invalid length for a Base-64 char array.

Source Error:

Line 90: Line 91: // Step 4. Convert the input string to a byte[] Line 92: byte[] DataToDecrypt = Convert.FromBase64String(Message); Line 93: Line 94: // Step 5. Attempt to decrypt the string


خیلی راه ها رو امتحان کردم ولی فایده نداشت، لطفا راهنمایی کنید.
با تشکر


بفرما برادر این هم سورس + خروجی چیزی که میخوای

Modernidea
دوشنبه 21 فروردین 1391, 00:26 صبح
بفرما برادر این هم سورس + خروجی چیزی که میخوای

خیلی ممنونم. خیلی لطف کردید.
یه سوال،
سرچی که کردم دیدم همون کلاس پست اول فراخونی میکنه، فقط فرقی که داره در Decrypt، اطلاعات رو به base64 تبدیل نمیکنه. نمیدونم چرا؟! اما کاملا درست عمل مکنه!

بازهم ممنونم.

haamidd
سه شنبه 24 تیر 1393, 11:44 صبح
ببخشید اون "کلید کد شدن" یعنی چی؟!!

برای چه؟!!

haamidd
سه شنبه 24 تیر 1393, 17:00 عصر
یکی میتونه به من بگه که "کلید کد" شدن یعنی چی؟!!

پیشاپیش ممنون دوستان : )

ahmad156
سه شنبه 24 تیر 1393, 20:29 عصر
دوست عزیز کلید برای رمزنگاری هست بدین معنی که با همین کلید Encrypt میشه و تنها با داشتن همین کلید میشه اون رو Decrypt کرد