我想驗證我的簽名。我使用此代碼驗證數字簽名
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);
我有字節數組格式的公鑰。這是在我的分貝。這樣
總是SUC = FALSE。我確定bytetoverify與方法符號中的輸入值具有相同的值。
我的標誌方法:
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);
我不知道這樣我生成公鑰的問題或跡象已經問題。在符號方法中,我使用sh1和pkcs1,但在驗證中我只找到sh1。
每個人都可以幫助我嗎?
**如果您的計算機上有任何**格式是字節數組格式。你需要更具體,並告訴我們你的嘗試。以十六進制顯示所有字節將是一個好主意;這是一個* public *鍵,對嗎? –
謝謝你回答我。是的,我將公鑰存儲在sql server中作爲圖像。我想獲取它並將其轉換爲rsa參數。我看不到公鑰在db來顯示你,因爲它是像image.and是的,它是在十六進制格式 – Fatemeh