您的位置:首页 > Web前端 > Node.js

crypto-js,require,nodejs,加密使用手册

2016-08-19 16:51 459 查看
密码模块我用的crypto-js,因为目测文档比较丰富。

因为业务需要,需要将Hmac-sha1摘要出的二进制串Base64编码后发送。 

但是由于crypto-js在内部加密使用的是私有的二进制数组WordArray,在给其他模块Base64编码时,总是没法拿到原生的二进制串,于是去认真学习了crypto-js。 

结果发现没必要拿到原生的二进制串,crypto直接就可以以Base64编码输出。

感觉NodeJS和Java的模块的设计思路偏差还是比较大的,node中并没有一个统一的通行协议,模块按功能进行划分,模块的边界也只能在功能而不能在算法,模块内用私有的数据对象,给多个模块联合工作带来比较大的不便,但是每个模块功能又非常健全,几乎不需要同其它模块合作。 

感觉这是语言基因不一样,需要更深入的学习NodeJS,早日写出Node味的代码。

简单用法示例: 

var CryptoJS = require(“crypto-js”); 

// 默认toHex的输出: 

var key = CryptoJS.MD5(content).toString(); 

// 将结果输出为Base64编码 

var auth = CryptoJS.HmacSHA1(to_sign, key).toString(CryptoJS.enc.Base64); 

var encrypted = CryptoJS.DES.encrypt(“Message”, “Secret Passphrase”); 

var decrypted = CryptoJS.DES.decrypt(encrypted, “Secret Passphrase”); 

var encrypted = CryptoJS.AES.encrypt(“Message”, “Secret Passphrase”); 

var decrypted = CryptoJS.AES.decrypt(encrypted, “Secret Passphrase”); 

var encrypted = CryptoJS.RC4.encrypt(“Message”, “Secret Passphrase”); 

var decrypted = CryptoJS.RC4.decrypt(encrypted, “Secret Passphrase”); 

// 将内容转变为二进制 

var key = CryptoJS.enc.Hex.parse(‘000102030405060708090a0b0c0d0e0f’); var iv = CryptoJS.enc.Hex.parse(‘101112131415161718191a1b1c1d1e1f’); var encrypted = CryptoJS.AES.encrypt(“Message”, key, { iv: iv }); 

var words = CryptoJS.enc.Base64.parse(‘SGVsbG8sIFdvcmxkIQ==’); 

var base64 = CryptoJS.enc.Base64.stringify(words); var words = CryptoJS.enc.Latin1.parse(‘Hello, World!’); 

// 编码模块 

var latin1 = CryptoJS.enc.Latin1.stringify(words); 

var words = CryptoJS.enc.Hex.parse(‘48656c6c6f2c20576f726c6421’); 

var hex = CryptoJS.enc.Hex.stringify(words); 

var words = CryptoJS.enc.Utf8.parse(‘好’); 

var utf8 = CryptoJS.enc.Utf8.stringify(words); 

var words = CryptoJS.enc.Utf16.parse(‘Hello, World!’); 

var utf16 = CryptoJS.enc.Utf16.stringify(words); 

var words = CryptoJS.enc.Utf16LE.parse(‘Hello, World!’); 

var utf16 = CryptoJS.enc.Utf16LE.stringify(words);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息