node-uuid可以快速地生成符合 RFC4122 規(guī)范 version 1 或者 version 4 的 UUID。js-base64可以實(shí)現(xiàn)Base64編碼和解碼,支持UTF-8編碼。crypto-js 可以非常方便地在 JavaScript 進(jìn)行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,進(jìn)行 AES、DES、Rabbit、RC4、Triple DES 加解密。SJCL是一個(gè)由斯坦福大學(xué)計(jì)算機(jī)安全實(shí)驗(yàn)室創(chuàng)立的項(xiàng)目,旨在創(chuàng)建一個(gè)安全、快速、短小精悍、易使用、跨瀏覽器的JavaScript加密庫(kù)。
node-uuidnode-uuid可以快速地生成符合 RFC4122 規(guī)范 version 1 或者 version 4 的 UUID(Universally Unique IDentifier, 標(biāo)識(shí)符)。 UUID的出現(xiàn),是為了在一個(gè)復(fù)雜的系統(tǒng)中,唯一的標(biāo)識(shí)每個(gè)信息實(shí)體,同時(shí)不需要有一個(gè)集中的id管理。也就是說(shuō),根據(jù)某種規(guī)則來(lái)為一個(gè)信息實(shí)體分配一個(gè)唯一的id,而且不需要一個(gè)id管理器來(lái)保證這個(gè)id的唯一性。 UUID是128位的全局唯一標(biāo)識(shí)符,通常由32字節(jié)的字符串表示。它通過(guò)MAC地址、時(shí)間戳、命名空間、隨機(jī)數(shù)、偽隨機(jī)數(shù)來(lái)保證生成ID的唯一性。version 1 是基于時(shí)間戳生成(time-based);version 1 是隨機(jī)生成(random( Version1:
[AppleScript] var uuidv1 = require('../../lib/uuid/we-uuidv1'); console.log(uuidv1()); // 輸出:70d47fd0-d250-11e6-9816-45a4888ae4f
Version4: [AppleScript] var uuidv4 = require('../../lib/uuid/we-uuidv4'); console.log(uuidv4()); // 輸出:d839476c-ce27-4d24-a431-e96123c1916b可以設(shè)定產(chǎn)生參數(shù) [AppleScript] var v1 = uuidv1({
node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
clockseq: 0x1234,
msecs: new Date().getTime(),
nsecs: 5678
}); console.log(v1); // 輸出:908e3a9e-d250-11e6-9234-0123456789ab
js-base64可以實(shí)現(xiàn)Base64編碼和解碼,支持UTF-8編碼。 Base64是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的表示方法。由于2的6次方等于64,所以每6個(gè)比特為一個(gè)單元,對(duì)應(yīng)某個(gè)可打印字符。三個(gè)字節(jié)有24個(gè)比特,對(duì)應(yīng)于4個(gè)Base64單元,即3個(gè)字節(jié)需要用4個(gè)可打印字符來(lái)表示。它可用來(lái)作為電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Z、a-z、數(shù)字0-9 ,這樣共有62個(gè)字符,此外兩個(gè)可打印符號(hào)在不同的系統(tǒng)中而不同 Base64其實(shí)是一種簡(jiǎn)單的置換加密方式,但是BASE64的用處往往并不是為了防止信息泄露,而且為了方便傳輸,進(jìn)過(guò)BASE64編碼后的信息會(huì)比原始信息長(zhǎng),大概是4/3倍。 編碼: console.log(Base64.encode('Wechat')); // 輸出:V2VjaGF0 console.log(Base64.encode('微信')); // 輸出:5b6u5L+h解碼: console.log(Base64.decode('V2VjaGF0')); // 輸出:Wechat console.log(Base64.decode('5b6u5L+h')); // 輸出:微信crypto-jscrypto-js 可以非常方便地在 JavaScript 進(jìn)行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,進(jìn)行 AES、DES、Rabbit、RC4、Triple DES 加解密。 CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法,目前已支持的算法包括: MD5 SHA-1 SHA-256 AES Rabbit MARC4 HMAC
HMAC-MD5 HMAC-SHA1 HMAC-SHA256
PBKDF2
MD5: console.log(CryptoJS.MD5('Wechat').toString()); // 輸出:98ffdc1f1a326c9f73bbe0b78e1d180eSHA1: console.log(CryptoJS.SHA1('Wechat').toString()); // 輸出:42989457d716a8b89f99c687a41779d4102b5491SHA256: console.log(CryptoJS.SHA256('Wechat').toString()); // 輸出: 885e2deda21a6c752f05e9c3ac95c90de31bce4b25ce38c330feee389906c83fSJCLSJCL(斯坦福大學(xué)Javascript加密庫(kù)簡(jiǎn)稱(chēng)),是一個(gè)由斯坦福大學(xué)計(jì)算機(jī)安全實(shí)驗(yàn)室創(chuàng)立的項(xiàng)目,旨在創(chuàng)建一個(gè)安全、快速、短小精悍、易使用、跨瀏覽器的JavaScript加密庫(kù)。 SJCL使用了行業(yè)標(biāo)準(zhǔn)的AES 128, 192, 256位加密;SHA256 哈希函數(shù);HMAC驗(yàn)證碼;PBKDF2密碼加強(qiáng)器;CCM和OCB認(rèn)證加密模式。 加密: var enStr = sjcl.encrypt("password", "Wechat"); console.log(enStr);解密: var deStr = sjcl.decrypt("password", enStr); console.log(deStr);參考資料其他 |