整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

各种各样加密算法的js库,安全加密不再愁-crypto-js

crypto-js是一个前端Javascript标准加密算法库,CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。有时候项目涉及到的敏感数据比较多,为了信息安全,我们常常需要对一些数据进行接口加密处理,如编码、将明文转化为暗文、加密比对,目前已支持的算法包括:MD5、 SHA-1、SHA-256、AES、Rabbit、MARC4、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、PBKDF2等






Github

https://github.com/brix/crypto-js


安装

使用npm进行安装

npm install crypto-js

使用

支持nodejs和浏览器

  • ES6
import sha256 from 'crypto-js/sha256';
import hmacSHA512 from 'crypto-js/hmac-sha512';
import Base64 from 'crypto-js/enc-base64';

const message, nonce, path, privateKey; // ...
const hashDigest = sha256(nonce + message);
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));
  • 模块化
var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
...
console.log(SHA256("Message"));
  • 直接引用
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
    var encrypted = CryptoJS.AES(...);
    var encrypted = CryptoJS.SHA256(...);
</script>

AES加密

  • 明文加密
var CryptoJS = require("crypto-js");

// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();

// Decrypt
var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);

console.log(originalText); // 'my message'
  • 对象加密
var CryptoJS = require("crypto-js");

var data = [{id: 1}, {id: 2}]

// 加密
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();

// 解密
var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));

console.log(decryptedData); // [{id: 1}, {id: 2}]

模块集合


  • crypto-js/core
  • crypto-js/x64-core
  • crypto-js/lib-typedarrays

  • crypto-js/md5
  • crypto-js/sha1
  • crypto-js/sha256
  • crypto-js/sha224
  • crypto-js/sha512
  • crypto-js/sha384
  • crypto-js/sha3
  • crypto-js/ripemd160

  • crypto-js/hmac-md5
  • crypto-js/hmac-sha1
  • crypto-js/hmac-sha256
  • crypto-js/hmac-sha224
  • crypto-js/hmac-sha512
  • crypto-js/hmac-sha384
  • crypto-js/hmac-sha3
  • crypto-js/hmac-ripemd160

  • crypto-js/pbkdf2

  • crypto-js/aes
  • crypto-js/tripledes
  • crypto-js/rc4
  • crypto-js/rabbit
  • crypto-js/rabbit-legacy
  • crypto-js/evpkdf

  • crypto-js/format-openssl
  • crypto-js/format-hex

  • crypto-js/enc-latin1
  • crypto-js/enc-utf8
  • crypto-js/enc-hex
  • crypto-js/enc-utf16
  • crypto-js/enc-base64

  • crypto-js/mode-cfb
  • crypto-js/mode-ctr
  • crypto-js/mode-ctr-gladman
  • crypto-js/mode-ofb
  • crypto-js/mode-ecb

  • crypto-js/pad-pkcs7
  • crypto-js/pad-ansix923
  • crypto-js/pad-iso10126
  • crypto-js/pad-iso97971
  • crypto-js/pad-zeropadding
  • crypto-js/pad-nopadding



总结

有这样一个齐全的加密算法库,就很方便很多了,小伙伴们火速收藏吧!

端常用的数据加密方式主要包括以下几种:

  1. Base64编码:虽然Base64编码不被认为是一种真正的加密方式,但它可以将二进制数据转换为ASCII字符串,使得数据可以在文本格式中安全地传输。Base64编码常用于在网页中嵌入图像或其他二进制资源。
  2. AES(高级加密标准):AES是一种对称加密算法,它使用相同的密钥进行加密和解密。AES有多种密钥长度,包括128位、192位和256位,密钥长度越长,安全性越高。前端可以使用JavaScript库(如CryptoJS)来实现AES加密。
  3. RSA:RSA是一种非对称加密算法,它使用一对密钥进行加密和解密。公钥用于加密数据,私钥用于解密数据。RSA算法的安全性基于大数分解问题的困难性。前端可以使用JavaScript库(如jsencrypt)来实现RSA加密。
  4. SHA(安全散列算法):SHA是一种密码散列函数,它将任意长度的数据映射为固定长度的散列值。SHA算法常用于生成数据的数字签名或验证数据的完整性。前端可以使用JavaScript内置的函数(如`crypto.subtle.digest`)来实现SHA散列。
  5. HMAC(基于密钥的散列消息认证码):HMAC是一种基于密钥和散列函数的消息认证码算法,它可以用于验证消息的完整性和认证消息的来源。HMAC结合了密钥和散列函数的优点,提高了安全性。前端可以使用JavaScript库(如CryptoJS)来实现HMAC。

在实际应用中,前端数据加密通常不是孤立的,而是与后端服务协同工作。前端可以使用上述加密算法对敏感数据进行加密,然后将加密后的数据传输给后端进行进一步处理。后端在接收到加密数据后,可以使用相应的解密算法进行解密,并对数据进行处理。

此外,前端还可以采用其他安全措施来增强数据加密的效果,例如使用HTTPS协议进行数据传输,以确保数据在传输过程中的安全性。同时,前端开发者还应注意保护密钥的安全,避免密钥泄露导致加密失效。

、老方法:让文字藏身于文件中

其实这种方法已经流传很久了,但效果很好,本法适用于藏身的文件种类较多,像EXE可执行文件、MP3音乐文件都行,最经典的是用图片文件(BMP或JPG)。它的原理很简单,就是一个加法合成,将需要加密的文字信息(事先保存在一个TXT文本文件中)追加到BMP图片文件的后面。首先在D盘中新建一个1.txt文件,里面的内容是待加密的文本信息:接着将一个图片文件1.bmp也复制到D盘,它是藏身文本信息的“母体”;然后执行“开始”→“运行”菜单命令,输入“CMD”并确定以打开系统的命令行窗口,输入“d:”并且回车由系统目录转入D盘;输入一条COPY命令:“copy1.bmp/b+1.txt2.bmp”,回车后系统会提示“已复制1个文件”,这条命令的功能是用图片文件1.bmp和文本文件1.txt“加”起来生成第三个文件2.bmp。此时已经大功告成,如果直接在“我的电脑”中双击打开这个含有文字信息的图片文件2.bmp的话,系统将会调用本机的看图程序来打开,所看到的是与原图(1.bmp)一模一样的图片,唯一一的区别就是文件的大小是图片文件1.bmp和文本文件1.txt的和,而由于文本文件1.txt一般都非常小(kB级而已),所以一般都不会觉察到。

加密倒是加密了,那么如何还原出1.txt中文本文件的内容呢?很简单,在新的2.bmp文件上右键单击选择“打开方式”→“选择程序”,在弹出的“打开方式”窗口中选择“记事本”程序后确定,系统会马上调用记事本来打开这个图片文件2.bmp。在打开的记事本窗口中前面99%的内容都是乱码,也就是原图片文件1.bmp的内容,拖动滚动条到文件的最后,就会看到文本信息的原形。这种方法的优点是不需要第三方软件,直接使用系统自带的COPY命令;缺点是谁都可以用修改“打开方式”调用记事本的方法来打开“新”图片文件,而看到最后面的文字信息。

二、新招式:让文字变身为二维码

这次不能赤手空拳了,需要使用一个小工具,下载地址是http://www.52z.com/SOFt/12982.html,名字叫QRCode。下载解压后会得到一个文件PsQREditchs,双击后就可以使用了。

界面以及使用方法都非常简单,首先单击选择下方的第四个选项卡“文本信息”,然后在输入框中输入你想要加密的文字信息(软件支持文字的复制和粘贴),在输入文字的过程中你会发现上方的空白处会出现一个奇怪的黑白四方图形,这就是所谓的“二维码”,而且它会随着所输入文字信息的增加而越来越复杂、越来越密。文字信息输入完成后,单击选中窗口下方的“加密”选项,并且在前面的“加密密码”框中输入设定的密码。最后单击上方工具栏的第三个“存盘”按钮,按照提示选择保存路径并且命名,这样就得到了所输入文字信息的带密码保护的加密信息,这个文件是一个BMP位图文件。从表面上看什么也看不出来,就是一个黑白花纹矩形块,可以把它通过电子邮件或QQ传送给朋友,即便别人中途截获也丝毫看不出其中所藏的文字信息。朋友接收到这幅“图片”后,再运行QRCode软件把它读取进来,并且要输入生成图片时设置的密码,这样就会还原出原来的文字信息了。