JS RSA 签名实现
来源:互联网 发布:虚拟ip地址软件 编辑:程序博客网 时间:2024/06/03 14:51
折腾了一天半,总算是把JS RSA给弄好了。。。。简单讲下实现。
首先去下载jsrsasign的库,这个库是纯js的,不依赖于openssl,所以可以在浏览器直接使用,当然后端的nodejs也是可以用的。比较通用。
http://kjur.github.io/jsrsasign/ https://github.com/kjur/jsrsasign
这个库依赖一个crypto-js库,他的例子里面很多是从googlecode里面直接使用,不过,由于我们都知道的原因,这个是无法访问的。
幸好有人把它从googlecode移动了一份到github
https://github.com/evanvosberg/crypto-js
都下载以后,把库放到站点的目录上。
下面讲讲使用。
首先引用想要的库
<script src="http://yui.yahooapis.com/2.9.0/build/yahoo/yahoo-min.js"></script> <script src="crypto-js/components/core.js"></script> <script src="crypto-js/components/sha1.js"></script> <script src="crypto-js/components/md5.js"></script> <script src="crypto-js/components/sha256.js"></script> <script language="JavaScript" type="text/javascript" src="ext/jsbn.js"></script> <script language="JavaScript" type="text/javascript" src="ext/jsbn2.js"></script> <script language="JavaScript" type="text/javascript" src="ext/prng4.js"></script> <script language="JavaScript" type="text/javascript" src="ext/rng.js"></script> <script language="JavaScript" type="text/javascript" src="ext/rsa.js"></script> <script language="JavaScript" type="text/javascript" src="ext/rsa2.js"></script> <script language="JavaScript" type="text/javascript" src="ext/base64.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/rsapem-1.1.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/rsasign-1.2.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/asn1hex-1.1.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/crypto-1.1.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/pkcs5pkey-1.0.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/base64x-1.1.js"></script> <script language="JavaScript" type="text/javascript" src="jsrsasign/keyutil-1.0.js"></script>
我本来想使用requirejs的,不过,不大会用。。。
然后要根据配置读取key,配置sign方式。
var prvKey = KEYUTIL.getRSAKeyFromPlainPKCS8PEM(pem); // KEYUTIL提供了PKCS#8的pem读取,这是一般用openssl生成的默认。而jsrsasign的默认是PKCS#1 所以需要用keyutilvar sig = new KJUR.crypto.Signature({"alg": "MD5withRSA", "prov": "cryptojs/jsrsa"}); // alg为MD5WithRSA,这个还有个常见的是SHA1WithRSA,不过貌似支付宝是用的MD5,所以我们公司用的也是MD5,也许java默认的就是这个格式。sig.initSign(prvKey); // 设置keysig.signString(signString); // 签名var sign = hex2b64(s4.hSign); // 得到签名Hex,并转成base64string
对了,还需要注意的是,pem的头,不是
BEGIN RSA PRIVATE KEY
而是
BEGIN PRIVATE KEY
其实后者是我用openssl里面生成就是这样的,我不知道为啥会是上面的那种头,没仔细研究。
大功告成。
哦了,简明攻略在此。jsrsa的资料真的好少,希望给后来者一点参考。
0 0
- JS RSA 签名实现
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- RSA的签名认证实现
- Node.js与PHP之间通过RSA算法实现签名验证
- openssl实现md5加rsa签名
- php实现rsa签名和验签
- Python 实现RSA SHA-1签名
- RSA 签名
- RSA 签名
- JS实现web签名
- RSA签名之:RSA加密
- java RSA加密 RSA签名
- php利用openssl实现RSA非对称加密签名
- php利用openssl实现RSA非对称加密签名
- 开发支付宝支付用DELPHI实现 RSA签名
- C#实现RSA加密与解密、签名与认证
- 【Delphi】支付宝RSA签名之Delphi实现
- properties文件编码问题
- 高新技术(反射、内省、类加载器、代理)
- JS--01
- 管理vc工程目录
- COM学习笔记(二):引用计数
- JS RSA 签名实现
- Android实现短信发送器
- overload与override的区别
- ext3文件系统基础
- float你真的懂了吗
- 极光推送使用 IOS端
- 了解android的基本知识
- 编程珠玑第一章位图排序扩展算法(可以排列包含负数的整数)
- android 中调用接口发送短信