使用公钥结合 jsencrypt 提供的 encrypt 方法(需要加密的内容)进行加密
使用私钥结合 jsencrypt 提供的 decrypt 方法进行解密
用javascript实现rsa加解密的实现方式是通过PKCS完成的。1、整个定义的function
function pkcs1pad2(s,n) {
if(n <s.length + 11) { // TODO: fix for utf-8
alert("Message too long for RSA")
return null
}
var ba = new Array()
var i = s.length - 1
while(i >= 0 &&n >0) {
var c = s.charCodeAt(i--)
//UTF-8编码为变长字节,使用实际的字节来记录
if(c <128) { // encode using utf-8
ba[--n] = c
}
else if((c >127) &&(c <2048)) {
ba[--n] = (c &63) | 128
ba[--n] = (c >>6) | 192
}
else {
ba[--n] = (c &63) | 128
ba[--n] = ((c >>6) &63) | 128
ba[--n] = (c >>12) | 224
}
}
//实际输入拼装结束,将下一位赋值为0标记结束
ba[--n] = 0
var rng = new SecureRandom()
var x = new Array()
//拼接随机非0字节
while(n >2) { // random non-zero pad
x[0] = 0
while(x[0] == 0) rng.nextBytes(x)
ba[--n] = x[0]
}
//这两位做简单的校验
ba[--n] = 2
ba[--n] = 0
return new BigInteger(ba)
}
该方法中对UTF-8字符进行了兼容,并且在拼装完实际输入的字符后,还拼装了随机的字节,使用拼装后的字符串去加密。由于每次拼装的结果是随机的,这样每次加密后的密文都不同。
2、调用方法:;
function RSAEncrypt(text) {
var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3)
if(m == null) return null
var c = this.doPublic(m)
if(c == null) return null
var h = c.toString(16)
if((h.length &1) == 0) return helse return "0" + h
}
自己太小白了,之前在PC端项目中使用的MD5加密,现在的小程序项目使用了 CryptoJS 里面的 enc-base64 和 hmac-sha1 ,之前没有用到过这两种,所以比较疑惑,为何在小程序不继续使用 MD5 呢?所以在这里记录一下自己解疑惑的一些知识点。
随着互联网的兴起,我们对信息的安全越来越受重视,这样就导致在web开发中,对用户密码等各种加密变得更加重要了。与服务器的交互中,为了确保数据传输的安全性,避免被黑客抓包篡改。
对于Base64编码的,我觉得看一篇文章能够解决你的疑惑,我在这里就不赘述了