我想验证我的签名。我使用此代码验证数字签名
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