احاول ان اقوم بتطبيق مثال RSA عبر .NET لكن تواجهني بعض المشاكل,
طول N يجب ان يكون 400h يعني 1024
E هي "AQAB"
N هي كما "rDgW9QtWU6FySpOM+PnvX05IryvmNHXtxdcen9wFnZNbKo8rZxdG3rZ4iP/ozYTflLs="
P,Q غير ضرورية, بالاصل غير معروفة
D ايضا غير معروفة لكنها غير ضرورية لما اسعى اليه
كما يظهر المتغيرات قاعدتها base64
احاول ان استخدم SHA1 كمزود للـ hash
طول الـ signature = 68
من المفترض ان يعود الناتج True (تاكيد) على صحة البيانات وتطابق الـ key مع الـ sign.. لم اقم بهذا من قبل على .NET لذا لا ادري ما المشكلة. اعتقد انه في تقطيع البيانات لذا هذا ما يستخدم في البرنامج الذي اعمل عليه :rolleyes:
p.s: ليس هناك اي مخالفة فهذا سؤال برمجي بحت :D
'Public Exponent() As Byte = System.Text.Encoding.ASCII.GetBytes("AQAB")
'Public Modulus() As Byte = System.Text.Encoding.ASCII.GetBytes("rDgW9QtWU6FySpOM+PnvX05IryvmNHXtxdcen9wFnZNbKo8rZxdG3rZ4iP/ozYTflLs=")
Public Function GetStringFromByteArray(ByVal ByteArray() As Byte) As String
Dim str As String = ""
For Each bytechar As Byte In ByteArray
str &= bytechar.ToString
Next
Return str
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Dim signProvider = New RSACryptoServiceProvider(400)
'Dim rsa As RSACryptoServiceProvider = New RSACryptoServiceProvider(400)
Dim RSA As New RSACryptoServiceProvider(400)
Dim data As Byte() = ASCII.GetBytes(TextBox1.Text)
Dim sign As Byte() = RSA.SignData(data, "SHA1")
Dim key As String = GetStringFromByteArray(sign)
Dim data_part As String = key.Substring(68)
Dim signature_part As String = key.Substring(0, 68)
TextBox1.Text = key
TextBox2.Text = data_part
TextBox3.Text = signature_part
Dim buffer1 As Byte() = ASCII.GetBytes(data_part)
Dim buffer2 As Byte() = ASCII.GetBytes(signature_part)
Dim a As Boolean = RSA.VerifyData(buffer1, "SHA1", buffer2)
Label1.Text = a
End Subقرأت مقالات الاخ SOLO.NET جزاه الله الخير لكن لم استطع ايجاد رابط بين ما ذكر ومشكلتي لعله يكون الحل. ايضا SHA1 لم يتم التكلم عنها.