欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js前端加密庫Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例

 更新時(shí)間:2023年12月24日 08:34:54   作者:以夕  
js加密解密可以使用crypto-js它可以進(jìn)行MD5、SHA-1、SHA-256、Base64、AES、DES、等算法和加密,這是一個(gè)對(duì)稱加密的庫,可以使用 AES、DES、但沒有rsa等非對(duì)稱加密的方法

CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法,由于它使用起來稍微有些復(fù)雜。所以本文主要著重說一下CryptoJS進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例。

Crypto-JS的幾種加密方式

CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法。

  • 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

HMAC 系列是消息驗(yàn)證,用于驗(yàn)證一個(gè)消息是否被篡改——如網(wǎng)站上傳遞 email 和 hmac(email),則接收時(shí)可以通過 hmac(email) 獲知 email 是否是用戶偽造的

MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPEMD160 等哈希算法是不可逆的,即無法從哈希值反推出原始數(shù)據(jù)。

HMAC、PBKDF2、EvpKDF 等算法是基于哈希算法的消息認(rèn)證碼算法,也是不可逆的。

AES、DES、TripleDES、RC4、RC4Drop、Rabbit、RabbitLegacy 等對(duì)稱加密算法是可逆的,即可以通過密鑰將密文解密為明文。

非對(duì)稱加密算法如 RSA、DSA、Diffie-Hellman 等也是可逆的,但是在加密和解密時(shí)使用的是不同的密鑰。

Crypto-js庫MD5加密方法

MD5是一種常用的哈希算法,不可逆。用于將任意長度的消息壓縮成一個(gè)128位的摘要。MD5算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)128位的摘要。
  • 容易計(jì)算:MD5算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)MD5算法的示例代碼:

const crypto = require('crypto');


function md5(str) {
  const hash = crypto.createHash('md5');
  hash.update(str);
  return hash.digest('hex');
}


console.log(md5('hello world'));

/*
1 ==> c4ca4238a0b923820dcc509a6f75849b
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)md5函數(shù),用于計(jì)算MD5摘要。函數(shù)接受一個(gè)參數(shù):str 表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)md5哈希對(duì)象,然后使用 update 方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用 digest 方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的MD5摘要,并輸出了結(jié)果。

Crypto-js庫SHA1加密方法

SHA1是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)160位的摘要。SHA1算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)160位的摘要。
  • 容易計(jì)算:SHA1算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA1算法的示例代碼:

const crypto = require('crypto');


function sha1(str) {
  const hash = crypto.createHash('sha1');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha1('hello world'));

/*
1 ==> 356a192b7913b04c54574d18c28d46e6395428ab
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè) sha1 函數(shù),用于計(jì)算 SHA1 摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha1哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA1摘要,并輸出了結(jié)果。

Crypto-js庫SHA256加密方法

SHA256是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)256位的摘要。SHA256算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)256位的摘要。
  • 容易計(jì)算:SHA256算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA256算法的示例代碼:

const crypto = require('crypto');


function sha256(str) {
  const hash = crypto.createHash('sha256');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha256('hello world'));

/*
1 ==> 6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)sha256函數(shù),用于計(jì)算SHA256摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha256哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA256摘要,并輸出了結(jié)果。

Crypto-js庫SHA224加密方法

SHA224是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)224位的摘要。SHA224算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)224位的摘要。
  • 容易計(jì)算:SHA224算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA224算法的示例代碼:

const crypto = require('crypto');


function sha224(str) {
  const hash = crypto.createHash('sha224');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha224('hello world'));

/*
1 ==> e25388fde8290dc286a6164fa2d97e551b53498dcbf7bc378eb1f178
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)sha224函數(shù),用于計(jì)算SHA224摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha224哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA224摘要,并輸出了結(jié)果。

Crypto-js庫SHA512加密方法

SHA512是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)512位的摘要。SHA512算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)512位的摘要。
  • 容易計(jì)算:SHA512算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA512算法的示例代碼:

const crypto = require('crypto');


function sha512(str) {
  const hash = crypto.createHash('sha512');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha512('hello world'));

/*
1 ==> 4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)sha512函數(shù),用于計(jì)算SHA512摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha512哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA512摘要,并輸出了結(jié)果。

Crypto-js庫SHA384加密方法

SHA384是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)384位的摘要。SHA384算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)384位的摘要。
  • 容易計(jì)算:SHA384算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA384算法的示例代碼:

const crypto = require('crypto');


function sha384(str) {
  const hash = crypto.createHash('sha384');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha384('hello world'));

/*
1 ==> 47f05d367b0c32e438fb63e6cf4a5f35c2aa2f90dc7543f8a41a0f95ce8a40a313ab5cf36134a2068c4c969cb50db776
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)sha384函數(shù),用于計(jì)算SHA384摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha384哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA384摘要,并輸出了結(jié)果。

Crypto-js庫SHA3加密方法

SHA3是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)固定長度的摘要。SHA3算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)固定長度的摘要。
  • 容易計(jì)算:SHA3算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)SHA3算法的示例代碼:

const crypto = require('crypto');


function sha3(str) {
  const hash = crypto.createHash('sha3-256');
  hash.update(str);
  return hash.digest('hex');
}


console.log(sha3('hello world'));

/*
1 ==> 67b176705b46206614219f47a05aee7ae6a3edbe850bbbe214c536b989aea4d2
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)sha3函數(shù),用于計(jì)算SHA3摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)sha3哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的SHA3摘要,并輸出了結(jié)果。

Crypto-js庫RIPEMD160加密方法

RIPEMD160是一種常用的哈希算法,用于將任意長度的消息壓縮成一個(gè)160位的摘要。RIPEMD160算法具有以下特點(diǎn):

  • 壓縮性:任意長度的消息都可以被壓縮成一個(gè)160位的摘要。
  • 容易計(jì)算:RIPEMD160算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行哈希計(jì)算。
  • 抗修改性:對(duì)原始數(shù)據(jù)進(jìn)行任何修改,都會(huì)導(dǎo)致哈希值的變化。
  • 抗碰撞性:對(duì)不同的原始數(shù)據(jù),哈希值相同的概率非常小。

以下是使用Node.js實(shí)現(xiàn)RIPEMD160算法的示例代碼:

const crypto = require('crypto');


function ripemd160(str) {
  const hash = crypto.createHash('ripemd160');
  hash.update(str);
  return hash.digest('hex');
}


console.log(ripemd160('hello world'));

/*
1 ==> c47907abd2a80492ca9388b05c0e382518ff3960
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)ripemd160函數(shù),用于計(jì)算RIPEMD160摘要。函數(shù)接受一個(gè)參數(shù):str表示要計(jì)算摘要的字符串。在計(jì)算摘要時(shí),我們首先創(chuàng)建一個(gè)ripemd160哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算摘要的數(shù)據(jù),最后使用digest方法計(jì)算摘要并返回。在上面的示例中,我們計(jì)算了字符串'hello world'的RIPEMD160摘要,并輸出了結(jié)果。

Crypto-js庫HMAC加密方法

HMAC是一種常用的消息認(rèn)證碼算法,用于驗(yàn)證消息的完整性和真實(shí)性。HMAC算法的全稱是“基于哈希函數(shù)的消息認(rèn)證碼”(Hash-based Message Authentication Code),它通過在原始數(shù)據(jù)上附加一個(gè)密鑰,然后對(duì)附加了密鑰的數(shù)據(jù)進(jìn)行哈希計(jì)算,最后將哈希值作為認(rèn)證碼。HMAC算法具有以下特點(diǎn):

  • 安全性高:HMAC算法使用密鑰對(duì)原始數(shù)據(jù)進(jìn)行加密,可以有效防止數(shù)據(jù)被篡改。
  • 靈活性強(qiáng):HMAC算法可以使用多種哈希函數(shù),如SHA256、SHA512等。
  • 計(jì)算速度快:HMAC算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行認(rèn)證計(jì)算。

以下是使用Node.js實(shí)現(xiàn)HMAC算法的示例代碼:

const crypto = require('crypto');


function hmac(key, str) {
  const hmac = crypto.createHmac('sha256', key);
  hmac.update(str);
  return hmac.digest('hex');
}


console.log(hmac('secret', 'hello world'));

/*
hmac('密鑰', '需要計(jì)算認(rèn)證碼的字符串') ==> 9964da4845db286e4df728b0b106aafb8d87b3d52867f63d0ac925c52759eeb0
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)hmac函數(shù),用于計(jì)算HMAC認(rèn)證碼。函數(shù)接受兩個(gè)參數(shù):key表示密鑰,str表示要計(jì)算認(rèn)證碼的字符串。在計(jì)算認(rèn)證碼時(shí),我們首先創(chuàng)建一個(gè)HMAC哈希對(duì)象,然后使用update方法向?qū)ο笾刑砑右?jì)算認(rèn)證碼的數(shù)據(jù),最后使用digest方法計(jì)算認(rèn)證碼并返回。在上面的示例中,我們使用密鑰'secret'對(duì)字符串'hello world'進(jìn)行HMAC認(rèn)證,并輸出了結(jié)果。

Crypto-js庫PBKDF2加密方法

PBKDF2是一種常用的密碼加密算法,用于將用戶密碼轉(zhuǎn)換成一個(gè)固定長度的密鑰。PBKDF2算法的全稱是“基于密碼的密鑰派生函數(shù)”(Password-Based Key Derivation Function),它通過在用戶密碼上附加一個(gè)隨機(jī)鹽值,然后對(duì)附加了鹽值的密碼進(jìn)行多次哈希計(jì)算,最后將計(jì)算結(jié)果作為密鑰。PBKDF2算法具有以下特點(diǎn):

  • 安全性高:PBKDF2算法使用隨機(jī)鹽值和多次哈希計(jì)算,可以有效防止密碼被破解。
  • 靈活性強(qiáng):PBKDF2算法可以使用多種哈希函數(shù),如SHA256、SHA512等。
  • 計(jì)算速度慢:PBKDF2算法的計(jì)算速度比較慢,適用于對(duì)密碼進(jìn)行加密計(jì)算。

以下是使用Node.js實(shí)現(xiàn)PBKDF2算法的示例代碼:

const crypto = require('crypto');


function pbkdf2(password, salt, iterations, keylen, digest) {
  return new Promise((resolve, reject) => {
    crypto.pbkdf2(password, salt, iterations, keylen, digest, (err, derivedKey) => {
      if (err) {
        reject(err);
      } else {
        resolve(derivedKey.toString('hex'));
      }
    });
  });
}


const password = 'password';
const salt = crypto.randomBytes(16).toString('hex');
const iterations = 100000;
const keylen = 32;
const digest = 'sha256';


pbkdf2(password, salt, iterations, keylen, digest)
  .then((key) => {
    console.log(`密碼: ${password}`);
    console.log(`鹽值: ${salt}`);
    console.log(`迭代次數(shù): ${iterations}`);
    console.log(`密鑰長度: ${keylen}`);
    console.log(`哈希算法: ${digest}`);
    console.log(`轉(zhuǎn)換后的密鑰: ${key}`);
  })
  .catch((err) => {
    console.error(err);
  });


/*
const password = '123';
const salt = '123';
const iterations = 123;
const keylen = 123;
const digest = 'sha256';
==>
密碼: 123
鹽值: 123
迭代次數(shù): 123
密鑰長度: 123
哈希算法: sha256
轉(zhuǎn)換后的密鑰: af878c22b0663114e3a74345bccb9a95d074ec4b4325320489d8a312f9dda8f5a7f79291a18e866777324a2bf01add1fd747ea198ceaa468c9f7188a80523dda60dc27f9136691c8f0aee031d14475ce1e7946b29f47cc0d8c0ff7f8d411631b5f2f8ac442b87c79b19e382bad19cd07709207b1e536d3f510d88d
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)pbkdf2函數(shù),用于將密碼轉(zhuǎn)換為密鑰。這個(gè)函數(shù)接受五個(gè)參數(shù):password表示要轉(zhuǎn)換的密碼,salt表示鹽值,iterations表示迭代次數(shù),keylen表示密鑰長度,digest表示哈希算法。在函數(shù)內(nèi)部,我們使用crypto.pbkdf2方法將密碼轉(zhuǎn)換為密鑰,并將密鑰轉(zhuǎn)換為十六進(jìn)制字符串。最后,我們使用Promise對(duì)象返回密鑰。在主函數(shù)中,我們定義了password、salt、iterations、keylen和digest等參數(shù),并調(diào)用pbkdf2函數(shù)將密碼轉(zhuǎn)換為密鑰。最后,我們輸出了轉(zhuǎn)換前的密碼、鹽值、迭代次數(shù)、密鑰長度、哈希算法和轉(zhuǎn)換后的密鑰。

Crypto-js庫EvpKDF加密方法

EvpKDF是一種常用的密碼加密算法,用于將用戶密碼轉(zhuǎn)換成一個(gè)固定長度的密鑰。EvpKDF算法的全稱是“基于密碼的密鑰派生函數(shù)”(Password-Based Key Derivation Function),它通過在用戶密碼上附加一個(gè)隨機(jī)鹽值,然后對(duì)附加了鹽值的密碼進(jìn)行多次哈希計(jì)算,最后將計(jì)算結(jié)果作為密鑰。EvpKDF算法具有以下特點(diǎn):

  • 安全性高:EvpKDF算法使用隨機(jī)鹽值和多次哈希計(jì)算,可以有效防止密碼被破解。
  • 靈活性強(qiáng):EvpKDF算法可以使用多種哈希函數(shù),如SHA256、SHA512等。
  • 計(jì)算速度慢:EvpKDF算法的計(jì)算速度比較慢,適用于對(duì)密碼進(jìn)行加密計(jì)算。

以下是使用Node.js實(shí)現(xiàn)EvpKDF算法的示例代碼:

const crypto = require('crypto');


function evpKDF(password, salt, keylen, iterations, digest) {
  return new Promise((resolve, reject) => {
    crypto.pbkdf2(password, salt, iterations, keylen, digest, (err, derivedKey) => {
      if (err) {
        reject(err);
      } else {
        resolve(derivedKey.toString('hex'));
      }
    });
  });
}


const password = 'password';
const salt = crypto.randomBytes(16).toString('hex');
const keylen = 32;
const iterations = 100000;
const digest = 'sha256';


evpKDF(password, salt, keylen, iterations, digest)
  .then((key) => {
    console.log(`密碼: ${password}`);
    console.log(`鹽值: ${salt}`);
    console.log(`密鑰長度: ${keylen}`);
    console.log(`迭代次數(shù): ${iterations}`);
    console.log(`哈希算法: ${digest}`);
    console.log(`轉(zhuǎn)換后的密鑰: ${key}`);
  })
  .catch((err) => {
    console.error(err);
  });

/*
const password = '123';
const salt = '123';
const keylen = 132;
const iterations = 100000;
const digest = 'sha256';
==> 
密碼: 123
鹽值: 123
密鑰長度: 132
迭代次數(shù): 100000
哈希算法: sha256
轉(zhuǎn)換后的密鑰: 67a7a835eb2787fb9578f9082821d89039426f4ae66d64e534d4285ed83586199865d28fddc5dca5e49e14023dca614715556e2f8e88523640e91698cb47ff59542d47cdeb25f83b830f5b8918c78854fd8210f0f40ce7164618ed335a61b32c0d14cb3f862e720686466ea9069bb071e5c1d7eef984baf8b64799a222cf14275e4e1612
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)evpKDF函數(shù),用于將密碼轉(zhuǎn)換為密鑰。這個(gè)函數(shù)接受五個(gè)參數(shù):password表示要轉(zhuǎn)換的密碼,salt表示鹽值,keylen表示密鑰長度,iterations表示迭代次數(shù),digest表示哈希算法。在函數(shù)內(nèi)部,我們使用crypto.pbkdf2方法將密碼轉(zhuǎn)換為密鑰,并將密鑰轉(zhuǎn)換為十六進(jìn)制字符串。最后,我們使用Promise對(duì)象返回密鑰。在主函數(shù)中,我們定義了password、salt、keylen、iterations和digest等參數(shù),并調(diào)用evpKDF函數(shù)將密碼轉(zhuǎn)換為密鑰。最后,我們輸出了轉(zhuǎn)換前的密碼、鹽值、密鑰長度、迭代次數(shù)、哈希算法和轉(zhuǎn)換后的密鑰。

Crypto-js庫AES加密方法

AES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。AES算法的全稱是“高級(jí)加密標(biāo)準(zhǔn)”(Advanced Encryption Standard),它使用固定長度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長度可以是128位、192位或256位。AES算法具有以下特點(diǎn):

  • 安全性高:AES算法使用固定長度的密鑰進(jìn)行加密和解密,可以有效防止數(shù)據(jù)被破解。
  • 靈活性強(qiáng):AES算法可以使用多種密鑰長度,如128位、192位或256位。
  • 計(jì)算速度快:AES算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)AES算法的示例代碼:

const crypto = require('crypto');


function aesEncrypt(data, key, iv) {
  const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function aesDecrypt(encrypted, key, iv) {
  const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = crypto.randomBytes(32);     // 密鑰,一個(gè) Buffer 類
const iv = crypto.randomBytes(16);      // 初始化向量,一個(gè) Buffer 類
const encrypted = aesEncrypt(data, key, iv);
const decrypted = aesDecrypt(encrypted, key, iv);


console.log(`原始數(shù)據(jù): ${data}`);
console.log(`密鑰: ${key}`);
console.log(`初始化向量: ${iv}`);
console.log(`加密后的數(shù)據(jù): ${encrypted}`);
console.log(`解密后的數(shù)據(jù): ${decrypted}`);

/*
const data = '1';
const key = Buffer.from('01234567890123456789012345678901', 'utf-8');
const iv = Buffer.from('0123456789012345', 'utf-8');
const encrypted = aesEncrypt(data, key, iv);
const decrypted = aesDecrypt(encrypted, key, iv);
==> 
原始數(shù)據(jù): 1
密鑰: 01234567890123456789012345678901
初始化向量: 0123456789012345
加密后的數(shù)據(jù): 8fa6aaeb56062010a71b3750cc337fe5
解密后的數(shù)據(jù): 1
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):aesEncrypt和aesDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,iv表示初始化向量。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建AES加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。在主函數(shù)中,我們定義了data、key和iv等參數(shù),并調(diào)用aesEncrypt函數(shù)將數(shù)據(jù)加密,然后調(diào)用aesDecrypt函數(shù)將加密后的數(shù)據(jù)解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫DES加密方法

DES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。DES算法的全稱是“數(shù)據(jù)加密標(biāo)準(zhǔn)”(Data Encryption Standard),它使用固定長度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長度為64位。但是由于DES算法的密鑰強(qiáng)度較弱,因此現(xiàn)在已經(jīng)不再推薦使用。DES算法具有以下特點(diǎn):

  • 安全性較低:DES算法使用固定長度的密鑰進(jìn)行加密和解密,密鑰長度較短,容易被破解。
  • 靈活性較差:DES算法只能使用64位的密鑰長度,不夠靈活。
  • 計(jì)算速度較快:DES算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)DES算法的示例代碼:

const crypto = require('crypto');


function desEncrypt(data, key, iv) {
  const cipher = crypto.createCipheriv('des-cbc', key, iv);
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function desDecrypt(encrypted, key, iv) {
  const decipher = crypto.createDecipheriv('des-cbc', key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = crypto.randomBytes(8);      // 密鑰,一個(gè) Buffer 類
const iv = crypto.randomBytes(8);       // 初始化向量,一個(gè) Buffer 類
const encrypted = desEncrypt(data, key, iv);
const decrypted = desDecrypt(encrypted, key, iv);


console.log(`原始數(shù)據(jù): ${data}`);
console.log(`密鑰: ${key}`);
console.log(`初始化向量: ${iv}`);
console.log(`加密后的數(shù)據(jù): ${encrypted}`);
console.log(`解密后的數(shù)據(jù): ${decrypted}`);

/*
const data = '1';
const key = Buffer.from('12345678', 'utf-8');
const iv = Buffer.from('12345678', 'utf-8');
const encrypted = desEncrypt(data, key, iv);
const decrypted = desDecrypt(encrypted, key, iv);
==> 
原始數(shù)據(jù): 1
密鑰: 12345678
初始化向量: 12345678
加密后的數(shù)據(jù): db7d5df1fd65aa2f
解密后的數(shù)據(jù): 1
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):desEncrypt和desDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,iv表示初始化向量。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建DES加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。在主函數(shù)中,我們定義了data、key和iv等參數(shù),并調(diào)用desEncrypt函數(shù)將數(shù)據(jù)加密,然后調(diào)用desDecrypt函數(shù)將加密后的數(shù)據(jù)解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫TripleDES加密方法

TripleDES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。TripleDES算法的全稱是“三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn)”(Triple Data Encryption Standard),它使用固定長度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長度為192位。TripleDES算法具有以下特點(diǎn):

  • 安全性較高:TripleDES算法使用三個(gè)不同的密鑰進(jìn)行加密和解密,密鑰長度較長,安全性較高。
  • 靈活性較差:TripleDES算法只能使用168位的密鑰長度,不夠靈活。
  • 計(jì)算速度較慢:TripleDES算法的計(jì)算速度比較慢,適用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)TripleDES算法的示例代碼:

const crypto = require('crypto');


function tripleDesEncrypt(data, key, iv) {
  const cipher = crypto.createCipheriv('des-ede3-cbc', key, iv);
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function tripleDesDecrypt(encrypted, key, iv) {
  const decipher = crypto.createDecipheriv('des-ede3-cbc', key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = crypto.randomBytes(24);     // 密鑰,一個(gè) Buffer 類
const iv = crypto.randomBytes(8);       // 初始化向量,一個(gè) Buffer 類
const encrypted = tripleDesEncrypt(data, key, iv);
const decrypted = tripleDesDecrypt(encrypted, key, iv);


console.log(`原始數(shù)據(jù): ${data}`);
console.log(`密鑰: ${key}`);
console.log(`初始化向量: ${iv}`);
console.log(`加密后的數(shù)據(jù): ${encrypted}`);
console.log(`解密后的數(shù)據(jù): ${decrypted}`);

/*
const data = '1';
const key = Buffer.from('012345678901234567890123', 'utf-8');
const iv = Buffer.from('12345678', 'utf-8');
const encrypted = tripleDesEncrypt(data, key, iv);
const decrypted = tripleDesDecrypt(encrypted, key, iv);
==> 
原始數(shù)據(jù): 1
密鑰: 012345678901234567890123
初始化向量: 12345678
加密后的數(shù)據(jù): 0d23ede5a77e7088
解密后的數(shù)據(jù): 1
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):tripleDesEncrypt和tripleDesDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,iv表示初始化向量。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建TripleDES加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。在主函數(shù)中,我們定義了data、key和iv等參數(shù),并調(diào)用tripleDesEncrypt函數(shù)將數(shù)據(jù)加密,然后調(diào)用tripleDesDecrypt函數(shù)將加密后的數(shù)據(jù)解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫RC4加密方法

RC4是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。RC4算法的全稱是“Rivest Cipher 4”,它使用一個(gè)變長的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長度可以是1到256位。RC4算法具有以下特點(diǎn):

  • 安全性較低:RC4算法的安全性較低,容易被破解。
  • 靈活性較強(qiáng):RC4算法可以使用1到256位的密鑰長度,比較靈活。
  • 計(jì)算速度較快:RC4算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)RC4算法的示例代碼:

const crypto = require('crypto');


function rc4Encrypt(data, key) {
  const cipher = crypto.createCipheriv('rc4', key, '');
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function rc4Decrypt(encrypted, key) {
  const decipher = crypto.createDecipheriv('rc4', key, '');
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = 'my secret key';
const encrypted = rc4Encrypt(data, key);
const decrypted = rc4Decrypt(encrypted, key);


console.log(`原始數(shù)據(jù): ${data}`);
console.log(`密鑰: ${key}`);
console.log(`加密后的數(shù)據(jù): ${encrypted}`);
console.log(`解密后的數(shù)據(jù): ${decrypted}`);

/*
const data = '1';
const key = '123';
const encrypted = rc4Encrypt(data, key);
const decrypted = rc4Decrypt(encrypted, key);
==> 
原始數(shù)據(jù): 1
密鑰: 123
加密后的數(shù)據(jù): 62
解密后的數(shù)據(jù): 1
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):rc4Encrypt和rc4Decrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受兩個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建RC4加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。在主函數(shù)中,我們定義了data和key等參數(shù),并調(diào)用rc4Encrypt函數(shù)將數(shù)據(jù)加密,然后調(diào)用rc4Decrypt函數(shù)將加密后的數(shù)據(jù)解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫RC4Drop加密方法

RC4Drop是一種改進(jìn)的RC4算法,它通過在加密過程中丟棄一定數(shù)量的密鑰流,從而提高了RC4算法的安全性。RC4Drop算法的全稱是“丟棄RC4算法”(Discard RC4),它使用一個(gè)變長的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長度可以是1到256位。RC4Drop算法具有以下特點(diǎn):

  • 安全性較高:RC4Drop算法通過丟棄一定數(shù)量的密鑰流,提高了RC4算法的安全性。
  • 靈活性較強(qiáng):RC4Drop算法可以使用1到256位的密鑰長度,比較靈活。
  • 計(jì)算速度較快:RC4Drop算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)RC4Drop算法的示例代碼:

const crypto = require('crypto');


function rc4DropEncrypt(data, key, drop) {
  const cipher = crypto.createCipheriv('rc4', key, '');
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted.substr(drop * 2);
}


function rc4DropDecrypt(encrypted, key, drop) {
  encrypted = '0'.repeat(drop * 2) + encrypted;
  const decipher = crypto.createDecipheriv('rc4', key, '');
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = 'my secret key';
const drop = 1024;
const encrypted = rc4DropEncrypt(data, key, drop);
const decrypted = rc4DropDecrypt(encrypted, key, drop);


console.log(`原始數(shù)據(jù): ${data}`);
console.log(`密鑰: ${key}`);
console.log(`加密后的數(shù)據(jù): ${encrypted}`);
console.log(`解密后的數(shù)據(jù): ${decrypted}`);

/*
const data = 'hello world';
const key = 'my secret key';
const drop = 1024;
const encrypted = rc4DropEncrypt(data, key, drop);
const decrypted = rc4DropDecrypt(encrypted, key, drop);
==> 
結(jié)果亂碼了。。。
*/

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):rc4DropEncrypt和rc4DropDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,drop表示丟棄的字節(jié)數(shù)。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建RC4加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。在加密時(shí),我們使用substr方法截取加密后的數(shù)據(jù),丟棄前drop個(gè)字節(jié)。在解密時(shí),我們?cè)诩用芎蟮臄?shù)據(jù)前面添加drop個(gè)字節(jié)的0,然后再進(jìn)行解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫Rabbit加密方法

Rabbit是一種常用的流密碼算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。Rabbit算法的全稱是“快速安全流密碼”(Fast and Secure Stream Cipher),它使用一個(gè)變長的密鑰和一個(gè)變長的初始化向量對(duì)數(shù)據(jù)進(jìn)行加密和解密。Rabbit算法具有以下特點(diǎn):

  • 安全性較高:Rabbit算法的安全性較高,可以有效防止數(shù)據(jù)被破解。
  • 靈活性較強(qiáng):Rabbit算法可以使用不同長度的密鑰和初始化向量,比較靈活。
  • 計(jì)算速度較快:Rabbit算法的計(jì)算速度比較快,適用于對(duì)大量數(shù)據(jù)進(jìn)行加密和解密。

以下是使用Node.js實(shí)現(xiàn)Rabbit算法的示例代碼:

// 代碼報(bào)錯(cuò)
const crypto = require('crypto');


function rabbitEncrypt(data, key, iv) {
  const cipher = crypto.createCipheriv('rc4', key, iv);
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function rabbitDecrypt(encrypted, key, iv) {
  const decipher = crypto.createDecipheriv('rc4', key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = crypto.randomBytes(16);
const iv = crypto.randomBytes(8);
const encrypted = rabbitEncrypt(data, key, iv);
const decrypted = rabbitDecrypt(encrypted, key, iv);


console.log(`Original data: ${data}`);
console.log(`Encrypted data: ${encrypted}`);
console.log(`Decrypted data: ${decrypted}`);

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):rabbitEncrypt和rabbitDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,iv表示初始化向量。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建Rabbit加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。在主函數(shù)中,我們定義了data、key和iv等參數(shù),并調(diào)用rabbitEncrypt函數(shù)將數(shù)據(jù)加密,然后調(diào)用rabbitDecrypt函數(shù)將加密后的數(shù)據(jù)解密。最后,我們輸出了原始數(shù)據(jù)、加密后的數(shù)據(jù)和解密后的數(shù)據(jù)。

Crypto-js庫RabbitLegacy加密方法

RabbitLegacy是Rabbit算法的一個(gè)舊版本,它使用一個(gè)64位的初始化向量,而不是Rabbit算法的128位初始化向量。RabbitLegacy算法已經(jīng)不再安全,不建議使用。如果需要使用Rabbit算法,請(qǐng)使用Rabbit算法的最新版本。

以下是使用Node.js實(shí)現(xiàn)RabbitLegacy算法的示例代碼:

// 代碼報(bào)錯(cuò)
const crypto = require('crypto');


function rabbitLegacyEncrypt(data, key, iv) {
  const cipher = crypto.createCipheriv('rc4-drop', key, iv);
  let encrypted = cipher.update(data, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}


function rabbitLegacyDecrypt(encrypted, key, iv) {
  const decipher = crypto.createDecipheriv('rc4-drop', key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}


const data = 'hello world';
const key = 'secret';
const iv = crypto.randomBytes(8);
const encrypted = rabbitLegacyEncrypt(data, key, iv);
const decrypted = rabbitLegacyDecrypt(encrypted, key, iv);


console.log(`Original data: ${data}`);
console.log(`Encrypted data: ${encrypted}`);
console.log(`Decrypted data: ${decrypted}`);

在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了兩個(gè)函數(shù):rabbitLegacyEncrypt和rabbitLegacyDecrypt,分別用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。這兩個(gè)函數(shù)接受三個(gè)參數(shù):data表示要加密或解密的數(shù)據(jù),key表示密鑰,iv表示初始化向量。在加密和解密時(shí),我們使用createCipheriv和createDecipheriv方法創(chuàng)建RabbitLegacy加密或解密對(duì)象,然后使用update方法向?qū)ο笾刑砑右用芑蚪饷艿臄?shù)據(jù)。最后,我們使用final方法獲取加密或解密后的數(shù)據(jù)。

到此這篇關(guān)于js前端加密庫Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例的文章就介紹到這了,更多相關(guān)js前端加密庫Crypto-js加解密的方法與示例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • echarts安裝與配置

    echarts安裝與配置

    這篇文章介紹了echarts安裝與配置的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • JS組件系列之Bootstrap table表格組件神器【終結(jié)篇】

    JS組件系列之Bootstrap table表格組件神器【終結(jié)篇】

    Bootstrap Table是輕量級(jí)的和功能豐富的以表格的形式顯示的數(shù)據(jù),支持單選,復(fù)選框,排序,分頁,顯示/隱藏列,固定標(biāo)題滾動(dòng)表,響應(yīng)式設(shè)計(jì),Ajax加載JSON數(shù)據(jù),點(diǎn)擊排序的列,卡片視圖等。本文給大家介紹JS組件系列之Bootstrap table表格組件神器【終結(jié)篇】,一起學(xué)習(xí)吧
    2016-05-05
  • JS正則表達(dá)式判斷有效數(shù)實(shí)例代碼

    JS正則表達(dá)式判斷有效數(shù)實(shí)例代碼

    這篇文章主要介紹了JS正則表達(dá)式判斷有效數(shù)實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • JS打開新窗口防止被瀏覽器阻止的方法

    JS打開新窗口防止被瀏覽器阻止的方法

    這篇文章主要介紹了JS打開新窗口防止被瀏覽器阻止的方法,分析對(duì)比了常用方法與改進(jìn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2015-01-01
  • 微信小程序定義和調(diào)用全局變量globalData的實(shí)現(xiàn)

    微信小程序定義和調(diào)用全局變量globalData的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序定義和調(diào)用全局變量globalData的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JavaScript實(shí)現(xiàn)快速排序的方法

    JavaScript實(shí)現(xiàn)快速排序的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)快速排序的方法,實(shí)例分析了javascript快速排序的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼

    JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2017-04-04
  • Javascript實(shí)現(xiàn)字?jǐn)?shù)統(tǒng)計(jì)

    Javascript實(shí)現(xiàn)字?jǐn)?shù)統(tǒng)計(jì)

    現(xiàn)在流行的Twitter等微博客網(wǎng)站,有一個(gè)很好的用戶體驗(yàn),就是在文本框中輸入文字的時(shí)候,會(huì)自動(dòng)統(tǒng)計(jì)輸入的字符,并顯示用戶還能輸入的字符,在限制了140個(gè)字的微博客中,這樣的小提示可以很好的增強(qiáng)用戶體驗(yàn)。
    2015-07-07
  • ionic開發(fā)中點(diǎn)擊input時(shí)鍵盤自動(dòng)彈出

    ionic開發(fā)中點(diǎn)擊input時(shí)鍵盤自動(dòng)彈出

    ionic開發(fā)移動(dòng)端界面時(shí),在輸入用戶名和密碼的時(shí)候,輸入法不要擋住我的輸入框,并且輸入框往上滾動(dòng)的時(shí)候,頂部標(biāo)題不要上移,下面給大家分享實(shí)現(xiàn)代碼,一起看看吧
    2016-12-12
  • JavaScript遍歷查找數(shù)組中最大值與最小值的方法示例

    JavaScript遍歷查找數(shù)組中最大值與最小值的方法示例

    這篇文章主要介紹了JavaScript遍歷查找數(shù)組中最大值與最小值的方法,結(jié)合實(shí)例形式分析了javascript基于數(shù)組遍歷、判斷實(shí)現(xiàn)最大值與最小值計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05

最新評(píng)論