02-10-12, 10:34 AM
(آخر تعديل لهذه المشاركة : 02-10-12, 10:46 AM {2} بواسطة محمود رغمان.)
كاتب الموضوع : Usama El-Mokadem
لغة البرمجة المستخدمة للتوضيح وفى إعداد المثال التالى (Microsoft Visual Basic.NET 2008):
Cryptography.zip
لتشفير نص يمكن أستخدام System.Security.Cryptography ، حيث أنها تتيح العديد من الدوال الجاهزة لتشفير البيانات بعدة اساليب مثل Symmetric Rijndael للتشفير المزدوج أو MD5 للتشفير فى اتجاه واحد او باستخدام مفتاح مزدوج ... الخ.
هذا المثال لاستخدام التشفير بأستخدام Symmetric Rijndael algorithm
ثم عرض البيانات المشفرة باستخدام Base64 لتسهيل قرائتها باستخدام الدالة System.Convert.ToBase64String
هذه الدالة تأخذ النص كمصفوفة من البايتات لذلك يلزم تحويل النص باستخدام الدالةSystem.Text.Encoding.ASCII.GetBytes لكن هذه الداله كما هو واضح من أسمها تتعامل مع الحروف الانجليزية القياسية فقط ASCII ، لذلك يمكنك استخدام Unicode أو UTF8 للتعامل مع النصوص العربية، الدالة: System.Text.Encoding.Unicode.GetBytes
ولفك تشفير البيانات، يتم ادخال البيانات بنفس هيئة Base64 ويتم تحويلها لأصلها باستخدام System.Convert.FromBase64String
دالة التشفير الرئيسية
شكراً
لغة البرمجة المستخدمة للتوضيح وفى إعداد المثال التالى (Microsoft Visual Basic.NET 2008):
Cryptography.zip
لتشفير نص يمكن أستخدام System.Security.Cryptography ، حيث أنها تتيح العديد من الدوال الجاهزة لتشفير البيانات بعدة اساليب مثل Symmetric Rijndael للتشفير المزدوج أو MD5 للتشفير فى اتجاه واحد او باستخدام مفتاح مزدوج ... الخ.
هذا المثال لاستخدام التشفير بأستخدام Symmetric Rijndael algorithm
ثم عرض البيانات المشفرة باستخدام Base64 لتسهيل قرائتها باستخدام الدالة System.Convert.ToBase64String
هذه الدالة تأخذ النص كمصفوفة من البايتات لذلك يلزم تحويل النص باستخدام الدالةSystem.Text.Encoding.ASCII.GetBytes لكن هذه الداله كما هو واضح من أسمها تتعامل مع الحروف الانجليزية القياسية فقط ASCII ، لذلك يمكنك استخدام Unicode أو UTF8 للتعامل مع النصوص العربية، الدالة: System.Text.Encoding.Unicode.GetBytes
ولفك تشفير البيانات، يتم ادخال البيانات بنفس هيئة Base64 ويتم تحويلها لأصلها باستخدام System.Convert.FromBase64String
دالة التشفير الرئيسية
كود :
Private Function Crypt(ByVal sText As String, ByVal sPass As String, ByVal bEnc As Boolean) As String
Dim bSalt As Byte() = System.Text.Encoding.ASCII.GetBytes("usama")
Dim iPass As New PasswordDeriveBytes(sPass, bSalt)
Dim Alg As New RijndaelManaged
Dim iTrans As ICryptoTransform
Dim iMem As New MemoryStream
Dim newData As Byte()
Alg.Key = iPass.GetBytes(32)
Alg.IV = iPass.GetBytes(16)
iTrans = IIf(bEnc = True, Alg.CreateEncryptor(), Alg.CreateDecryptor())
Dim iCrypt As New CryptoStream(iMem, iTrans, CryptoStreamMode.Write)
If bEnc Then
newData = System.Text.Encoding.Unicode.GetBytes(sText)
Else
newData = Convert.FromBase64String(sText)
End If
Try
iCrypt.Write(newData, 0, newData.Length)
iCrypt.Close()
If bEnc Then
Return Convert.ToBase64String(iMem.ToArray())
Else
Return System.Text.Encoding.Unicode.GetString(iMem.ToArray())
End If
Catch ex As Exception
End Try
Return ""
End Function