Ich möchte meine Unterschrift verifizieren. Ich verwende diesen Codedigitale Signatur überprüfen
var encoder = new UTF8Encoding();
byte[] bytesToVerify = encoder.GetBytes(LoginChallenge);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
RSAKeyInfo.Modulus = publickey1;
rsa.ImportParameters(RSAKeyInfo);
bool suc = rsa.VerifyData(bytesToVerify, CryptoConfig.MapNameToOID("SHA1"), signedBytes);
Ich habe öffentlichen Schlüssel im Byte-Array-Format. Es ist in meiner Datenbank. wie diese
immer suc = false. Ich bin sicher, bytetoverify hat den gleichen Wert mit dem Eingabewert im Methodenzeichen.
mein Zeichen Methode:
Signature signature=Signature.getInstance(Signature.ALG_RSA_SHA_PKCS1,false);
signature.init(thePrivateKey,Signature.MODE_SIGN);
signLength=signature.sign(buffer,(short)(ISO7816.OFFSET_CDATA & 0xFF), inputlength, buffer, (short)(0));
apdu.setOutgoingAndSend((short)0,signLength);
ich meinen öffentlichen Schlüssel erzeugen auf diese Weise nicht wissen, ist Problem oder Zeichen Problem hat. In der Zeichenmethode verwende ich sh1 und pkcs1, aber in Verify finde ich nur sh1.
kann mir jeder Körper helfen?
** Any ** -Format ist ein Byte-Array-Format, wenn es auf Ihrem Computer ist. Sie müssen genauer sein und uns zeigen, was Sie versucht haben. Es wäre eine gute Idee, alle Bytes in Hexadezimalzahlen anzuzeigen; Es ist ein * öffentlicher * Schlüssel, richtig? –
Vielen Dank für die Antwort. Ja, ich habe den öffentlichen Schlüssel in SQL Server als Bild gespeichert. Ich möchte es holen und es in RSA-Parameter konvertieren. Ich kann öffentlichen Schlüssel in DB nicht sehen, um Sie zu zeigen, weil es wie Bild ist. Und ja, es ist in Hex-Format – Fatemeh