crypto-jsRC4和hash_hmac运用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

crypto-jsRC4和hash_hmac运⽤
遇到⼀个问题,前端需要加密,可能⽤到⼀些算法,推荐这个库:crypto-js,
RC4是⼀个可逆的加密,看下⽤法:
import CryptoJS from 'crypto-js';
const RC4KEY = 'secretKey';
let name = 'abc'
let name_encrypted = CryptoJS.RC4.encrypt(name, RC4KEY); //加密
console.log(name_encrypted.toString());//类似于'U2FsdGVkX1+n5T4ZSSIH7Cq5uQ=='是个变化的数值
let name_decrypted = CryptoJS.RC4.decrypt(name_encrypted,RC4KEY);//解密
let name_decrypted_utf8 = CryptoJS.enc.Utf8.stringify(name_decrypted);
console.log(name_decrypted_utf8);//abc
以上代码实测通过:'abc’'通过RC4加密,最后解密出来了。

只是,与理解的相⽐,最后多了个
CryptoJS.enc.Utf8.stringify()
好答案都在googel,百度上的答案乱七⼋糟,就算了。


RC4加密应⽤场景:
⽐如你做了活动页⾯,页⾯url中有查询参数:id=10;
拿到你的这个url,再修改id,可以遍历你的所有活动,这就是安全性的问题。

如果对id这个参数进⾏加密,那就不⼀样了。

也就是说,客户看到你的id = U2FsdGVkX1+n5T4ZSSIH7Cq5uQ==;他就不好遍历了。

当然,这需要在链接url⽣成时就加密,然后再页⾯中获取这个加密的参数。

后端再去解密这个参数。

还是很安全的。

RC4这种加密是可逆的,hash_hmac是⼀个不可逆的加密,⽐MD5更安全,号称最安全的加密。

crypto-js的,hash_hmac⽤法:(详细请看:https:///questions/12099092/javascript-equivalent-of-phps-hash-hmac-with-raw-binary-output)
import CryptoJS from 'crypto-js';
var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase");
var base64 = hash.toString(CryptoJS.enc.Base64);
注意:上⾯的代码,对hash_hmac加密后的结果进⾏了base64编码。

另外,有⼀点⽐较迷惑:
crypto-js/hmac-sha1
crypto-js/sha1
这2个模块对应的⽅法为:
CryptoJS.SHA1("Message")
CryptoJS.HmacSHA1("Message", "Key")
这2个的区别是多了个参数,关系:HMACSHA1 是从 SHA1 哈希函数构造的⼀种键控哈希算法,被⽤作 HMAC(基于哈希的消息验证代码)。

相关文档
最新文档