jsrsasign的签名实现

33 篇文章 0 订阅
3 篇文章 0 订阅

参考jsrsa签名实现

参考基于jsrsasign框架的vue在rsa的签名过程

参考:https://www.jianshu.com/p/78821648d6ff

应用库: http://kjur.github.io/jsrsasign/  

github: https://github.com/machinewu/jsrsasign


这个是由前端用私钥签名,后端用公钥验证的过程。

前端生成随机的32位随机数,然后用私钥加密,然后转成base64格式,这些方法都在jsrsasign中有对应方法,官网中有说明。

这个前端的加密签名过程用了我一天的时间,崩溃到怀疑人生啊!!

主要参考是第二个,虽然是vue的,但是讲解比较清楚。

为什么一个加密过程花费了我一天的时间!总结了下

1. 还是对加密解密的一些概念不懂,leader给了一个私钥“MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAgDR9FwK5Je5TNE8KP2X5j7VUP1ioWs2mSNk+mWWbYTQ3AXfLPPdRhHFCVfBfmFopc3azL+9l9YMqaYfV+uyEZQIDAQABAkB76T9VtC4a+SO2FQbEi90PBqUsrJXbXZRwKHiWblwlL5n5DaFmqBTGU1ZsZxW17vQss254Om4Ct97DHCAYVjhBAiEA4LGn6nyXW1AcVRkBibZV3EYKOqoNsQb9tR3EE4clW0kCIQCSEUhhB3fEzpK1/8c2Lk1ty03zzL4bmULfJfj7YTOkPQIgSYR3P3bCgyMEEifbY/afwzG7eRRY5Ho4GsGBfS4z39kCIAnIOIWu/1lh0Dd6ErhRL4RL2kOakZy9jdnt7BfBsbitAh89IAnbzwvHMSeSCv3eXzh+NgQHQeUJD7EVcm7BD0pl”,我直接就去库中找api,可是忽略了蜜月需要带有‘—–BEGIN PRIVATE KEY—–’以及相应的尾标识。

2. 然后开始不知道PCK#8和PCK#1,虽然现在也不知道。。。不过仔细看官网的api说明还是可以摸索到正确答案的。

3. 就是一直验证不通过我开始用

sig.updateHex(uuid);其实应该用

sig.updateString( uuid );

4. 最后获取签名的时候用sig.sign()而不是sig.hSgin或者别的其他

5. 给后端传签名的时候,加号没有了,然后就用了encodeURICompoent来转码,后端解码,done!


注意:

密钥对需要带有‘—–BEGIN PRIVATE KEY—–’以及相应的尾标识密钥
对格式为PCK#8时使用KEYUTIL.getKey(yourPEMKey)进行解析,而PCK#1则使用rsa.readPrivateKeyFromPEMString
sig.sign()生成的是一串16进制字符串(hexadecimal),通过需要转换为base64位使用,通过jsrsasign的全局方法hextob64()进行转换。文档见jsrsasign的global相关方法
最后根据情况 需要使用encodeURICompoent(sign)将加密后的密文进行转码,因为一些+号传到后端可能不识别。



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值