js前端加密庫Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例
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)文章希望大家以后多多支持腳本之家!
- JavaScript實(shí)現(xiàn)的前端AES加密解密功能【基于CryptoJS】
- JS使用插件cryptojs進(jìn)行加密解密數(shù)據(jù)實(shí)例
- VueJs里利用CryptoJs實(shí)現(xiàn)加密及解密的方法示例
- 使用JS前端加密庫sm-crypto實(shí)現(xiàn)國密sm2、sm3和sm4加密與解密
- 前端CryptoJS加密、后端JAVA解密代碼實(shí)現(xiàn)參考
- vue項(xiàng)目中使用crypto-js實(shí)現(xiàn)加密解密方式
- JS使用 cryptojs加密解密(對(duì)稱加密庫)的問題
- vue項(xiàng)目之前端CryptoJS加密、解密代碼示例
- vue用CryptoJS加密,java用CryptoUtil解密
- crypto-js對(duì)稱加密解密的使用方式詳解(vue與java端)
相關(guān)文章
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-05JS正則表達(dá)式判斷有效數(shù)實(shí)例代碼
這篇文章主要介紹了JS正則表達(dá)式判斷有效數(shù)實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03微信小程序定義和調(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-11JavaScript實(shí)現(xiàn)快速排序的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)快速排序的方法,實(shí)例分析了javascript快速排序的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-04-04Javascript實(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-07ionic開發(fā)中點(diǎn)擊input時(shí)鍵盤自動(dòng)彈出
ionic開發(fā)移動(dòng)端界面時(shí),在輸入用戶名和密碼的時(shí)候,輸入法不要擋住我的輸入框,并且輸入框往上滾動(dòng)的時(shí)候,頂部標(biāo)題不要上移,下面給大家分享實(shí)現(xiàn)代碼,一起看看吧2016-12-12JavaScript遍歷查找數(shù)組中最大值與最小值的方法示例
這篇文章主要介紹了JavaScript遍歷查找數(shù)組中最大值與最小值的方法,結(jié)合實(shí)例形式分析了javascript基于數(shù)組遍歷、判斷實(shí)現(xiàn)最大值與最小值計(jì)算的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05