1. crypto #

cryptonode.js中实现加密和解密的模块 在node.js中,使用OpenSSL类库作为内部实现加密解密的手段 OpenSSL是一个经过严格测试的可靠的加密与解密算法的实现工具

windows版openSSL下载 代码

2. 散列(哈希)算法 #

散列算法也叫哈希算法,用来把任意长度的输入变换成固定长度的输出,常见的有md5,sha1等

获取所有的散列算法

console.log(crypto.getHashes());

散列算法示例

var crypto = require('crypto');
var md5 = crypto.createHash('md5');//返回哈希算法
var md5Sum = md5.update('hello');//指定要摘要的原始内容,可以在摘要被输出之前使用多次update方法来添加摘要内容
var result = md5Sum.digest('hex');//摘要输出,在使用digest方法之后不能再向hash对象追加摘要内容。
console.log(result);

3. HMAC算法 #

md5算法容易被彩虹表攻击,彩虹表就是描述()明文->密文)对应关系的一个大型数据库,破解时通过密文直接反查明文。 http://www.cmd5.com/

HMAC算法将散列算法与一个密钥结合在一起,以阻止对签名完整性的破坏 生成私钥

$ openssl genrsa -out key.pem 1024
var crypto = require('crypto');
var shasum = crypto.createHmac('sha1', 'zfpx');
var result = shasum.update('hello').digest('hex');
console.log(result);