crypto模块概述
在Node.js中,使用OpenSSL类库作为其内部实现加密与解密处理的基础手段,这是因为目前OpenSSL已经成为了一个经过严格测试的可靠的加密与解密算法的实现工具。
在Node.js中,OpenSSL类库被封装在crypto模块中,因此开发者可以使用crypto模块来实现各种不同的加密与解密处理。例如,crypto模块中包含了类似MD5或SHA-1之类的散列算法。开发者也可以通过crypto模块来实现HMAC运算 [1]。在crypto模块中,提供了一些加密方法来实现数据的可靠加密。另外,在crypto模块中,也提供了一些利用HMAC运算来实现数字签名以及对数字签名进行验证的方 法。
查看Node.js中能够使用的所有加密算法
在crypto模块中,为每一种加密算法定义了一个类。可以使用getCiphers方法 来查看Node.js中能够使用的所有加密算法。
crypto.getCiphers()
查看Node.js中能够使用的所有散列算法
可以使用getHashes方法来查看在Node.js中能够使用的所有散列算法。
crypto.getHashes()
散列算法
散列(哈希)算法用来实现一些重要处理,例如,在允许对一段数据进行验证的前提下,将数据进行模糊化,或者为一大段数据提供一个验证码
在node中,为了使用散列算法,首先应该使用createHash方法创建一个hash对象。
let hash=crypto.createHash(algorithm)algorithm:参数值为一个在Node.js中可以使用的算法,如'sha1'、'md5'、'sha256'、'sha512'和'ripemd160'等,用于指定需要使用的散列算法,该方法返回被创建的hash对象
在创建一个hash对象后可以通过使用该对象的update方法创建一个摘要。该方法的使用方式如下所示
hash.update(data,[input_encoding])data:参数值为一个Buffer对象或一个字符串,用于指定摘要内容
input_encoding:用于指定摘要内容所需使用的编码格式,可指定参数值为“utf8”、“ascii”或“binary”。如果不使用input_encoding参数,则data参数值必须为一个Buffer对象。可以在摘要被输出前使用多次update方法来添加摘要内容。
输出摘要内容
可以使用hash对象的digest方法来输出摘要内容。在使用了hash对象的digest方法后,不能再向hash对象中追加摘要内容。
hash.digest([encoding])
在hash对象的digest方法中,使用一个可选参数,参数值为一个字符串,用于指定输出摘要的编码格式,可指定参数值为“hex”、“binary”及“base64”。如果使用了该参数,那么digest方法返回字符串格式的摘要内容,如果不使用该参数,那么digest方法返回一个Buffer对象。在hash对象的digest方法被调用之后,该对象不能再被使用。
散列算法完整使用示例
var crypto = r