美文网首页
CryptoJS 使用

CryptoJS 使用

作者: gsunneverdie | 来源:发表于2020-04-30 22:57 被阅读0次

数组加密,Utf8编码,传递,加解密

var CryptoJS = require('crypto-js'); // 引入

var data = [{id: 1}, {id: 2}]; // 数组
var enc = CryptoJS.AES.encrypt(JSON.stringify(data), "Secret Passphrase");
console.log(enc.toString()); // toString() 默认转hex 16进制

var dec = CryptoJS.AES.decrypt(enc, "Secret Passphrase");
console.log(JSON.parse(dec.toString(CryptoJS.enc.Utf8))); // 解密,字符转json

加密,Base64编码,传递,解密

var s = 'Hello World';
// 加密
var enc = CryptoJS.AES.encrypt( // AES 算法
  CryptoJS.enc.Utf8.parse(s), CryptoJS.enc.Utf8.parse(key), // 内容,key
  {
    iv: CryptoJS.enc.Utf8.parse(iv),
    mode: CryptoJS.mode.CBC, // 模式
    padding: CryptoJS.pad.NoPadding // 填充(默认 CryptoJS.pad.Pkcs7),不使用填充
  }
); // 内容,key,iv 最好都转Utf8,保证数据正确
var b64 = CryptoJS.enc.Base64.stringify(enc.ciphertext); // *.ciphertext 加密内容,转字符串
// 解密
var dec = CryptoJS.AES.decrypt(
  CryptoJS.enc.Base64.parse(enc), CryptoJS.enc.Utf8.parse(key),
  {
    iv: CryptoJS.enc.Utf8.parse(iv),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.NoPadding
  }
);
console.log(dec.toString(CryptoJS.enc.Utf8)); // Hello World,转Utf8 字符串输出

引用PHP 和 Web 端对称加密传输|JSEncrypt|CryptoJS
引用分组密码工作模式

模式

  • PKCS7 填充字符串由一个字节序列组成,每个字节填充该字节序列的长度。
    假定块长度为 8,数据长度为 9,
    数据: FF FF FF FF FF FF FF FF. FF
    填充: FF FF FF FF FF FF FF FF. FF 07 07 07 07 07 07 07,如果恰好8个字节时还要补8个字节的0x08,可以让解密的数据很确定无误的移除多余的字节。
    PKCS5PaddingPKCS7Padding 在这方面是类似的。
    • 不同点在于,选择算法的时候如果选用 PKCS5Padding 填充模式,就是明确指定块大小是 8 个字节
    • 选用 PKCS7Padding 则是没有明确指定块大小。如果选择算法的时候选用 PKCS7Padding 填充模式,同时设置块大小为 8 字节,和选用 PKCS5Padding 填充模式,没有设置块大小(实际已经设置了 8 字节),这两种情况下,两种填充模式没有区别。另外有个值得注意的是,AES 中块大小是固定 16 字节。

相关文章

网友评论

      本文标题:CryptoJS 使用

      本文链接:https://www.haomeiwen.com/subject/yyjxghtx.html