java signatur_java – signature.verify()始终返回False

public static void main(String[] args) {

try{

String mod = "q0AwozeUj0VVkoksDQSCTj3QEgODomq4sAr02xMyIrWldZrNHhWfZAIcWt2MuAY3X6S3ZVUfOFXOrVbltRrO3F9Z6R8/jJIMv7wjkeVBFC5gncwGR0C3aV9gmF6II19jTKfF1sxb26iMEMAlMEOSnAAceNaJH91zBoaW7ZIh+qk=";

String exp = "AQAB";

byte[] modulusBytes = Base64.decodeBase64(mod.getBytes("UTF-8"));

byte[] exponentBytes = Base64.decodeBase64(exp.getBytes("UTF-8"));

String signedMessage = "3753e672cfb21e3c182ef2df51f19edeffb63432ed338a47251326ccc14aa63883e910a140cf313754ebc6425aad434e309307cc882da6cd4a4f9f40bd14a9823aca145e5ffc97cd63dbb5925c049282416bdfd7d74ddeef7055065210a841793fe315dff5a44af19c1522daafdc2f7e61ce5a2b42ebf79dfb086e6d210168dd";

BigInteger modulus = new BigInteger(1, modulusBytes );

BigInteger exponent = new BigInteger(1, exponentBytes);

RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);

KeyFactory fact = KeyFactory.getInstance("RSA");

PublicKey pubKey = fact.generatePublic(rsaPubKey);

Signature signature = Signature.getInstance("SHA1withRSA");

byte[] sigBytes = hexStringToByteArray(signedMessage);

signature.initVerify(pubKey);

System.out.println(signature.verify(sigBytes));

}catch(Exception e){

System.out.println("Error: " + e.toString());

}

}

private static byte[] hexStringToByteArray(final String encoded) {

if ((encoded.length() % 2) != 0)

throw new IllegalArgumentException("Input string must contain an even number of characters");

final byte result[] = new byte[encoded.length()/2];

final char enc[] = encoded.toCharArray();

for (int i = 0; i < enc.length; i += 2) {

StringBuilder curr = new StringBuilder(2);

curr.append(enc[i]).append(enc[i + 1]);

result[i/2] = (byte) Integer.parseInt(curr.toString(), 16);

}

return result;

}

此代码始终返回false.我不知道从哪里开始.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值