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

来源:互联网 发布:实用数据再分析法 pdf 编辑:程序博客网 时间:2024/05/19 02:25

密码模块我用的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);

0 0
原创粉丝点击