遇到一个问题,前端需要加密,可能用到一些算法,推荐这个库: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://stackoverflow.com/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(基于哈希的消息验证代码)。  

最新文章

  1. node实现watcher的困境
  2. 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
  3. Haskell 参考资料
  4. mongodb 安装与启动简单使用
  5. Linux下cutecom使用USB转串口线
  6. BZOJ3994: [SDOI2015]约数个数和
  7. 销售 >> 当今社会生产力最大的源泉为 >>自助服务 与推销员随之消失
  8. strust2 配置chainAction结果类型的配置
  9. js实现ppt
  10. Java中的异常处理(二)
  11. Android4.0 -- UI控件之 Menu 菜单的的使用(四)
  12. vue的增删改查
  13. property干嘛的
  14. note 12 集合Set
  15. django----图书管理
  16. angular学习笔记-关于ng-class的那些事儿
  17. mfc c++字符串类与 流输出
  18. .NET 开源Protobuf-net从入门到精通
  19. Linux中的守护进程——supervise
  20. MySQL Crash Course #02# Chapter 3. 4 通配符. 分页

热门文章

  1. Python 3 条件语句
  2. PatentTips - Zero voltage processor sleep state
  3. Clojure:读取xml
  4. 2.4-EN_STP
  5. test框架搭建
  6. Android4.4 wpa_supplicant深入分析之wpa_supplicant初始化流程续
  7. 【BZOJ 2288】 生日礼物
  8. maven变量
  9. c++ valarray 实现矩阵与向量相乘
  10. poj3233Matrix Power Series(矩阵乘法)