我有Crypto API创建的签名
if(!CryptCreateHash(hProv, CALG_MD5, 0, 0, &Hash))
return;
if(!CryptHashData(Hash, Buff,count, 0))
return;
if(CryptSignHash(Hash,AT_SIGNATURE,NULL,0,Buff,&count))
...
我想用Java验证签名。
C ++生成148字节的密钥长度,我需要一个java 162.我使用http://www.jensign.com/JavaScience/MSKeytoJKey/生成它。 要查看162生成的148重合。
然后我尝试验证签名
Signature dsa = Signature.getInstance("MD5WithRSA");
dsa.initVerify(rsapublickey);
dsa.update(Text);
Sign = dsa.verify(TextSign);
你猜对了,Sign的值是假的。我错过了什么,这真的会去哪儿?
答案 0 :(得分:0)
本机加密API使用little-endian字节顺序,而.NET Framework和JAVA使用big-endian字节顺序。如果要验证使用Crypto API生成的签名,则必须在调用函数之前交换签名字节的顺序,以验证Java中的签名。