java 消息签名_javapython消息签名与验证

我的服务器是用Python编写的,我正在为这个服务器制作一个java客户机。在

我正在使用以下内容对消息(数据)进行签名:public static byte[] Sign(PrivateKey privateKey, byte[] data) throws Exception{

System.out.println("Signing the key inside RSACrypto#Sign");

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

SecureRandom secureRandom =null;

dsa.initSign(privateKey,secureRandom);

dsa.update(data);

return dsa.sign();

}

这将返回一个byteArray(名为signed_data),现在我使用Base64.encodeBase64对该签名进行编码,并使用以下方法将byteArray(名为my_byte_数组)转换为字符串:

^{pr2}$

然后把这个字符串发送到服务器。在

在服务器端,我收到这个字符串,然后服务器使用以下方法验证签名:publicKey.verify(str(data), (long(base64.b64decode(my_byte_array)),))

当我试图在两边打印我的字节数组时,它们是相同的,有符号的数据和base64.b64decode(我的字节数组)也是一样的

但我得到了一个错误:ValueError: invalid literal for long() with base 10: '\x8b\xa1\xbb\x19fO\xea\xe7\xa4B\xd4\xd2\xa1\xe3\xb9\xd0\x89n\xa2\xfe\xb5\xedsL\x02\xba\xad\x12!qjp\x0c%+Z\t\xa7\x12\x08\x90\xfaTk\xca\xd0\xae\xd8\xa9\xfa\xbb]>9\x1c\x80\xd0

据我所知,出现这个错误的原因是Java将消息标记为字节,而python则希望它是Long格式。在

有办法解决这个问题吗?在

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值