遇到一个问题,前端需要加密,可能用到一些算法,推荐这个库: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. 清北学堂模拟赛d3t6 c

    分析:比较神奇的一道题.要把树变成环肯定要先变成链,然后把链给拼接成环.接下来考虑一个脑洞大开的树形dp:设f[i][0]表示i不与父节点相连的链数,f[i][1]表示i与父节点相连的链数,先考虑怎么 ...

  2. Train Problem II HDU 1023 卡特兰数

    Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want ...

  3. HDU 5501

    这题的01背包的特点很容易看出来,但其实发现,这个题讲究加入时候的顺序. 于是,用贪心排序,如代码中所示,如果A在B前面造成的分数损失更小,则排在前面...其实这个我也是猜的.. #include & ...

  4. 2.2-VLAN间路由

    2.2-VLAN间路由     第一代LAN间的通信:     不支持VLAN的交换机:由一个路由器和几个交换机组成,每个交换机的所有端口都同属于一个网段/LAN:在路由器上有几个网段就有几个与之相对 ...

  5. Linux IPC之共享内存C 事例

    Linux IPC之共享内存 标签: linuxrandomnull工作 2011-08-25 11:52 4123人阅读 评论(0) 收藏 举报  分类: Linux(3)  读书札记(3)  版权 ...

  6. luogu3834 【模板】可持久化线段树1(主席树)

    关键字:线段树 可持久化 线段树:当版本(即对应的原序列的区间[1,r])一定时,每个节点的left,right下标为值域,值为其对应的原序列区间[1,r]中元素大小在值域中的元素个数. 可持久化:新 ...

  7. framebuffer的入门介绍-实现程序分析【转】

    本文转载自:http://blog.csdn.net/liuzijiang1123/article/details/46972723 如想想对lcd屏进行操作(例如在lcd屏幕上画线,或者显示视频数据 ...

  8. Android+Jquery Mobile学习系列(8)-保单/生日提醒功能

    其实这个App基本功能早已做完,并且交给老婆试用去了.但由于最近项目要保证稳定,所以持续加班,没有时间写最后一点内容,本节也就简单截图做个说明,不详细叙述实现方式.我会把代码上传到最后一章中,有兴趣的 ...

  9. UESTC--1252--24点游戏(dfs)

     24点游戏 Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu Submit Status ...

  10. Newtonsoft.Json 序列化日期问题解决

    上代码 其中的使用方法和UserInfo实体对象就不贴代码了. /// <summary> /// 把对象转成json字符串 /// </summary> /// <pa ...