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

crypto-js RC4和hash_hmac运用的更多相关文章

  1. 前端使用crypto.js进行加密

    前端使用crypto.js进行加密 https://www.cnblogs.com/lz2017/p/8046816.html   最近我在前端使用Cookies保存密码的时候需要前端来进行加密工作, ...

  2. C# 中用DES 对称Key,IV 加密,前端crypto.js 解密

    1.服务器端代码 #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param na ...

  3. vue中使用AES.js和crypto.js加密

    一:crypto-js加密 1.1:安装依赖 npm install crypto-js --save-dev 1.2 :在项目目录上创建一个js文件里面写入加密,解密的代码 mport Crypto ...

  4. Node.js API 初解读(二)

    四. Cluster 1.简介 在介绍 Cluster 之前.我们需要知道 node的 一些基本特性,比如说 都知道的 nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的. 那么随之而 ...

  5. JS加密库Crypto-JS SEA加密

    http://www.seacha.com/tools/aes.html 在该网站测试 CryptoJS有很多加密方式网上查阅后有 CryptoJS (crypto.js) 为 JavaScript ...

  6. 浅析nodeJS中的Crypto模块,包括hash算法,HMAC算法,加密算法知识,SSL协议

    node.js的crypto在0.8版本,这个模块的主要功能是加密解密. node利用 OpenSSL库(https://www.openssl.org/source/)来实现它的加密技术, 这是因为 ...

  7. 手把手教你学node.js之学习使用外部模块

    学习使用外部模块 目标 建立一个 lesson2 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 md5 ...

  8. js前端数据加密插件

    (2014-11-14 15:37:35) 转载▼ 标签: it 分类: Web前端开发 摘要: 大部分动态网站都支持从客户端到服务器传递数据,如果传递的数据被别人截取就非常危险,尤其是一些用户名密码 ...

  9. 微信小程序存放视频文件到阿里云用到算法js脚本文件

           peterhuang007/weixinFileToaliyun: 微信小程序存放视频文件到阿里云用到算法js脚本文件 https://github.com/peterhuang007/ ...

随机推荐

  1. 2.1.6、SparkEnv中创建ShuffleManager

    ShuffleManager负责管理本地以及远程的block数据的shuffle操作. ShffuleManager的创建是在SparkEnv中. // Let the user specify sh ...

  2. Hibernate二级缓存的使用

    1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在 ...

  3. 学习C#和SQL的书籍

    1. <21天学通C#> 周红安等编著  电子工业出版社 2.  http://blog.csdn.net/21aspnet/article/details/1682200 3. < ...

  4. HYAppFrame(WinForm框架源代码)安装部署指南

    HYAppFrame是一款基于Win form的应用程序框架,包括serverWeb Service.主程序框架.组织架构.权限控制.菜单导航.基础数据.系统參数.日志管理.定时任务等. 项目地址:h ...

  5. 微信的token验证

    微信的token验证 在微信公众平台的基本配置中,需要输入token,这个token不是那个access_token springmvc验证代码: @RequestMapping(value=&quo ...

  6. jQuery和CSS3炫酷button点击波特效

    这是一款效果很炫酷的jQuery和CSS3炫酷button点击波特效.该特效当用户在菜单button上点击的时候.从鼠标点击的点開始,会有一道光波以改点为原点向外辐射的动画效果,很绚丽. 在线演示:h ...

  7. [深入学习C#]输入输出安全性——可变类型形參列表的变化安全性

    可变类型形參列表(variant-type-parameter-lists) 可变类型形參列表(variant-type-parameter-lists )仅仅能在接口和托付类型上出现.它与普通的ty ...

  8. 9.JAVA编程思想 多形性

    欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040241 "对于面向对象的程序设计语言,多型性是第三种最主要的特 ...

  9. LeetCode60:Permutation Sequence

    The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  10. 【Discuz】去除版权信息,标题栏与底部改动

    这篇文章尽管是介绍怎么把Discuz!的版权信息怎么搞得无影无踪,可是还是建议在不影响论坛视觉效果的情况下,保留Discuz的版权信息,毕竟它为我奉献了一个这么出色的开源论坛的phpproject.主 ...