عرض نسخة عادية إلى الحافظة؟
//مساحة الاسم
باستخدام النظام؛
باستخدام System.Security.Cryptography؛
باستخدام System.IO؛
باستخدام System.Text؛
//طريقة
// طريقة التشفير
تشفير السلسلة العامة (سلسلة pToEncrypt، سلسلة sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
// ضع السلسلة في مصفوفة البايت
// لقد قمت بتغيير ترميز UTF8 المستخدم في الأصل لتشفير Unicode، لكنه لا يعمل.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
// قم بتعيين المفتاح والإزاحة للكائن المشفر
// يستخدم النص الأصلي طريقة GetBytes للطريقة ASCIIEncoding.ASCII.
// اجعل من الضروري إدخال نص باللغة الإنجليزية عند إدخال كلمة المرور
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
// اكتب مصفوفة البايت في دفق التشفير
//(سينتهي به الأمر في دفق الذاكرة)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
// احصل على البيانات مرة أخرى من دفق الذاكرة، وإلى سلسلة
StringBuilder ret = new StringBuilder();
foreach (بايت ب في ms.ToArray())
{
// التنسيق على شكل سداسي عشري
ret.AppendFormat("{0:X2}"، b);
}
ret.ToString();
إرجاع ret.ToString();
}
// طريقة فك التشفير
فك تشفير السلسلة العامة (سلسلة pToDecrypt، سلسلة sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
// ضع سلسلة الإدخال في صفيف البايت
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
// قم بتعيين المفتاح والإزاحة للكائن المشفر. هذه القيمة مهمة ولا يمكن تعديلها.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
// ادفع البيانات من خلال دفق التشفير إلى دفق الذاكرة
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
// احصل على البيانات التي تم فك تشفيرها من دفق الذاكرة
// إنشاء كائن StringBuild يستخدم CreateDecrypt كائن دفق، ويجب تحويل النص الذي تم فك تشفيره إلى كائن دفق.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//-------اكتمل الرمز--------------------
//اسم المساحة
باستخدام النظام؛
باستخدام System.Security.Cryptography؛
باستخدام System.IO؛
باستخدام System.Text؛
//طريقة
// طريقة التشفير
تشفير السلسلة العامة (سلسلة pToEncrypt، سلسلة sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
// ضع السلسلة في مصفوفة البايت
// لقد قمت بتغيير ترميز UTF8 المستخدم في الأصل لتشفير Unicode، لكنه لا يعمل.
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
// قم بتعيين المفتاح والإزاحة للكائن المشفر
// يستخدم النص الأصلي طريقة GetBytes للطريقة ASCIIEncoding.ASCII.
// اجعل من الضروري إدخال نص باللغة الإنجليزية عند إدخال كلمة المرور
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
// اكتب مصفوفة البايت في دفق التشفير
//(سينتهي به الأمر في دفق الذاكرة)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
// احصل على البيانات مرة أخرى من دفق الذاكرة، وإلى سلسلة
StringBuilder ret = new StringBuilder();
foreach (بايت ب في ms.ToArray())
{
// التنسيق على شكل سداسي عشري
ret.AppendFormat("{0:X2}"، b);
}
ret.ToString();
إرجاع ret.ToString();
}
// طريقة فك التشفير
فك تشفير السلسلة العامة (سلسلة pToDecrypt، سلسلة sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
// ضع سلسلة الإدخال في صفيف البايت
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
// قم بتعيين المفتاح والإزاحة للكائن المشفر. هذه القيمة مهمة ولا يمكن تعديلها.
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
// ادفع البيانات من خلال دفق التشفير إلى دفق الذاكرة
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
// احصل على البيانات التي تم فك تشفيرها من دفق الذاكرة
// إنشاء كائن StringBuild يستخدم CreateDecrypt كائن دفق، ويجب تحويل النص الذي تم فك تشفيره إلى كائن دفق.
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
//------اكتمل الكود--------------------
ملحوظة: عند إدخال كلمة المرور في sKey يجب استخدام الأحرف الإنجليزية وهي حساسة لحالة الأحرف وعدد الأحرف هو 8 لا أكثر ولا أقل وإلا سيحدث خطأ.
أستخدم Windows2000 Server .Net Framework SP3، ويتم استخدامه بنجاح ضمن asp.net ضمن VS.Net، والتشفير وفك التشفير طبيعيان!