js前端加密庫(kù)Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例
CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法,由于它使用起來(lái)稍微有些復(fù)雜。所以本文主要著重說(shuō)一下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í)可以通過(guò) hmac(email) 獲知 email 是否是用戶偽造的
MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPEMD160 等哈希算法是不可逆的,即無(wú)法從哈希值反推出原始數(shù)據(jù)。
HMAC、PBKDF2、EvpKDF 等算法是基于哈希算法的消息認(rèn)證碼算法,也是不可逆的。
AES、DES、TripleDES、RC4、RC4Drop、Rabbit、RabbitLegacy 等對(duì)稱加密算法是可逆的,即可以通過(guò)密鑰將密文解密為明文。
非對(duì)稱加密算法如 RSA、DSA、Diffie-Hellman 等也是可逆的,但是在加密和解密時(shí)使用的是不同的密鑰。
Crypto-js庫(kù)MD5加密方法
MD5是一種常用的哈希算法,不可逆。用于將任意長(zhǎng)度的消息壓縮成一個(gè)128位的摘要。MD5算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA1加密方法
SHA1是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)160位的摘要。SHA1算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA256加密方法
SHA256是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)256位的摘要。SHA256算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA224加密方法
SHA224是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)224位的摘要。SHA224算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA512加密方法
SHA512是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)512位的摘要。SHA512算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA384加密方法
SHA384是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)384位的摘要。SHA384算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)SHA3加密方法
SHA3是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)固定長(zhǎng)度的摘要。SHA3算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(gè)固定長(zhǎng)度的摘要。
- 容易計(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庫(kù)RIPEMD160加密方法
RIPEMD160是一種常用的哈希算法,用于將任意長(zhǎng)度的消息壓縮成一個(gè)160位的摘要。RIPEMD160算法具有以下特點(diǎn):
- 壓縮性:任意長(zhǎng)度的消息都可以被壓縮成一個(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庫(kù)HMAC加密方法
HMAC是一種常用的消息認(rèn)證碼算法,用于驗(yàn)證消息的完整性和真實(shí)性。HMAC算法的全稱是“基于哈希函數(shù)的消息認(rèn)證碼”(Hash-based Message Authentication Code),它通過(guò)在原始數(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庫(kù)PBKDF2加密方法
PBKDF2是一種常用的密碼加密算法,用于將用戶密碼轉(zhuǎn)換成一個(gè)固定長(zhǎng)度的密鑰。PBKDF2算法的全稱是“基于密碼的密鑰派生函數(shù)”(Password-Based Key Derivation Function),它通過(guò)在用戶密碼上附加一個(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(`密鑰長(zhǎng)度: ${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
密鑰長(zhǎng)度: 123
哈希算法: sha256
轉(zhuǎn)換后的密鑰: af878c22b0663114e3a74345bccb9a95d074ec4b4325320489d8a312f9dda8f5a7f79291a18e866777324a2bf01add1fd747ea198ceaa468c9f7188a80523dda60dc27f9136691c8f0aee031d14475ce1e7946b29f47cc0d8c0ff7f8d411631b5f2f8ac442b87c79b19e382bad19cd07709207b1e536d3f510d88d
*/
在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)pbkdf2函數(shù),用于將密碼轉(zhuǎn)換為密鑰。這個(gè)函數(shù)接受五個(gè)參數(shù):password表示要轉(zhuǎn)換的密碼,salt表示鹽值,iterations表示迭代次數(shù),keylen表示密鑰長(zhǎng)度,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ù)、密鑰長(zhǎng)度、哈希算法和轉(zhuǎn)換后的密鑰。
Crypto-js庫(kù)EvpKDF加密方法
EvpKDF是一種常用的密碼加密算法,用于將用戶密碼轉(zhuǎn)換成一個(gè)固定長(zhǎng)度的密鑰。EvpKDF算法的全稱是“基于密碼的密鑰派生函數(shù)”(Password-Based Key Derivation Function),它通過(guò)在用戶密碼上附加一個(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(`密鑰長(zhǎng)度: ${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
密鑰長(zhǎng)度: 132
迭代次數(shù): 100000
哈希算法: sha256
轉(zhuǎn)換后的密鑰: 67a7a835eb2787fb9578f9082821d89039426f4ae66d64e534d4285ed83586199865d28fddc5dca5e49e14023dca614715556e2f8e88523640e91698cb47ff59542d47cdeb25f83b830f5b8918c78854fd8210f0f40ce7164618ed335a61b32c0d14cb3f862e720686466ea9069bb071e5c1d7eef984baf8b64799a222cf14275e4e1612
*/
在上面的代碼中,我們首先導(dǎo)入了crypto模塊,然后定義了一個(gè)evpKDF函數(shù),用于將密碼轉(zhuǎn)換為密鑰。這個(gè)函數(shù)接受五個(gè)參數(shù):password表示要轉(zhuǎn)換的密碼,salt表示鹽值,keylen表示密鑰長(zhǎng)度,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)換前的密碼、鹽值、密鑰長(zhǎng)度、迭代次數(shù)、哈希算法和轉(zhuǎn)換后的密鑰。
Crypto-js庫(kù)AES加密方法
AES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。AES算法的全稱是“高級(jí)加密標(biāo)準(zhǔn)”(Advanced Encryption Standard),它使用固定長(zhǎng)度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長(zhǎng)度可以是128位、192位或256位。AES算法具有以下特點(diǎn):
- 安全性高:AES算法使用固定長(zhǎng)度的密鑰進(jìn)行加密和解密,可以有效防止數(shù)據(jù)被破解。
- 靈活性強(qiáng):AES算法可以使用多種密鑰長(zhǎng)度,如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庫(kù)DES加密方法
DES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。DES算法的全稱是“數(shù)據(jù)加密標(biāo)準(zhǔn)”(Data Encryption Standard),它使用固定長(zhǎng)度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長(zhǎng)度為64位。但是由于DES算法的密鑰強(qiáng)度較弱,因此現(xiàn)在已經(jīng)不再推薦使用。DES算法具有以下特點(diǎn):
- 安全性較低:DES算法使用固定長(zhǎng)度的密鑰進(jìn)行加密和解密,密鑰長(zhǎng)度較短,容易被破解。
- 靈活性較差:DES算法只能使用64位的密鑰長(zhǎng)度,不夠靈活。
- 計(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庫(kù)TripleDES加密方法
TripleDES是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。TripleDES算法的全稱是“三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn)”(Triple Data Encryption Standard),它使用固定長(zhǎng)度的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長(zhǎng)度為192位。TripleDES算法具有以下特點(diǎn):
- 安全性較高:TripleDES算法使用三個(gè)不同的密鑰進(jìn)行加密和解密,密鑰長(zhǎng)度較長(zhǎng),安全性較高。
- 靈活性較差:TripleDES算法只能使用168位的密鑰長(zhǎng)度,不夠靈活。
- 計(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庫(kù)RC4加密方法
RC4是一種常用的對(duì)稱加密算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。RC4算法的全稱是“Rivest Cipher 4”,它使用一個(gè)變長(zhǎng)的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長(zhǎng)度可以是1到256位。RC4算法具有以下特點(diǎn):
- 安全性較低:RC4算法的安全性較低,容易被破解。
- 靈活性較強(qiáng):RC4算法可以使用1到256位的密鑰長(zhǎng)度,比較靈活。
- 計(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庫(kù)RC4Drop加密方法
RC4Drop是一種改進(jìn)的RC4算法,它通過(guò)在加密過(guò)程中丟棄一定數(shù)量的密鑰流,從而提高了RC4算法的安全性。RC4Drop算法的全稱是“丟棄RC4算法”(Discard RC4),它使用一個(gè)變長(zhǎng)的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,密鑰長(zhǎng)度可以是1到256位。RC4Drop算法具有以下特點(diǎn):
- 安全性較高:RC4Drop算法通過(guò)丟棄一定數(shù)量的密鑰流,提高了RC4算法的安全性。
- 靈活性較強(qiáng):RC4Drop算法可以使用1到256位的密鑰長(zhǎng)度,比較靈活。
- 計(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庫(kù)Rabbit加密方法
Rabbit是一種常用的流密碼算法,用于對(duì)數(shù)據(jù)進(jìn)行加密和解密。Rabbit算法的全稱是“快速安全流密碼”(Fast and Secure Stream Cipher),它使用一個(gè)變長(zhǎng)的密鑰和一個(gè)變長(zhǎng)的初始化向量對(duì)數(shù)據(jù)進(jìn)行加密和解密。Rabbit算法具有以下特點(diǎn):
- 安全性較高:Rabbit算法的安全性較高,可以有效防止數(shù)據(jù)被破解。
- 靈活性較強(qiáng):Rabbit算法可以使用不同長(zhǎng)度的密鑰和初始化向量,比較靈活。
- 計(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庫(kù)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前端加密庫(kù)Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例的文章就介紹到這了,更多相關(guān)js前端加密庫(kù)Crypto-js加解密的方法與示例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 常規(guī)常用的JavaScript加密解密實(shí)例demo
- crypto-js對(duì)稱加密解密的使用方式詳解(vue與java端)
- 使用JS前端加密庫(kù)sm-crypto實(shí)現(xiàn)國(guó)密sm2、sm3和sm4加密與解密
- vue項(xiàng)目中使用crypto-js實(shí)現(xiàn)加密解密方式
- JavaScript中常見(jiàn)加密解密方法總結(jié)
- JavaScript實(shí)現(xiàn)加密與解密詳解
- JavaScript實(shí)現(xiàn)的簡(jiǎn)單加密解密操作示例
- JavaScript插件為什么看不懂,使用了什么技術(shù)?(示例講解)
相關(guān)文章
javascript實(shí)現(xiàn)數(shù)組去重的多種方法
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)數(shù)組去重的多種方法,感興趣的小伙伴們可以參考一下2016-03-03
javascript 刪除dom對(duì)象的事件函數(shù)代碼
本文為《JavaScript高級(jí)程序設(shè)計(jì)》第9章中的跨平臺(tái)事件中的部分內(nèi)容。2010-04-04
Javascript ES6中數(shù)據(jù)類型Symbol的使用詳解
Symbol類型是es6新增的一個(gè)數(shù)據(jù)類型,Symbol值通過(guò)Symbol函數(shù)生成Symbol類型是保證每個(gè)屬性的名字都是獨(dú)一無(wú)二的,對(duì)于一個(gè)對(duì)象由對(duì)個(gè)模塊構(gòu)成的情況非常有用,本文主要介紹了Javascript ES6中數(shù)據(jù)類型Symbol使用的相關(guān)資料,需要的朋友可以參考下。2017-05-05
JavaScript將坐標(biāo)字符串轉(zhuǎn)為數(shù)組的項(xiàng)目實(shí)踐
本文主要介紹了JavaScript將坐標(biāo)字符串轉(zhuǎn)為數(shù)組的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
Three.js中網(wǎng)格對(duì)象MESH的屬性與方法詳解
三維開(kāi)發(fā)渲染最多的對(duì)象大概是網(wǎng)格mesh了,Webgl開(kāi)發(fā)三維也不例外,下面這篇文章主要給大家介紹了關(guān)于Three.js中網(wǎng)格對(duì)象MESH的屬性與方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09

