Crypto 加密模块 net.Stream TCP流模块 DNS 域名解析 Crypto 加密模块 使用require('crypto')来访问这个模块。 crypto 模块需要node 所运行的运行支持OpenSSL,该模块为使用安全证书实现HTTPS 安全网络以及HTTP 连 接提供了支持。 模块同样为OpenSSL 的hash、hmac、cipher、decipher、sign 以及verify 方法提供一层包装(以方便在Node 中 使用)。 crypto.createCredentials(details) 建立一个证书对象,参数detail 是由键值对组成的字典。 key : 一个字符串,包含PEM 编码的私钥 cert: 一个字符串,包含PEM 编码的证书 ca : 一个包含PEM 编码的、可信任的数字中心认证证书的字符串或者字符串列表 crypto.createHash(algorithm) 通过参数algorithm 指定算法建立并且返回一个哈希对象,可以用来产生哈希摘要。 algorithm 参数依赖于node 运行平台上OpenSSL 所支持的有效算法。例如sha1,md5,sha256,sha512等,在最近发 布的版本中, openssl list-message-digest-algorithms 将显示有效的算法摘要。 hash.update(data) 使用data 更新哈希表。当以流的方式接受新数据时(数据可能被为分多次接收),可多次调用此方法。 hash.digest(encoding='binary') 计算所有传递来数据的哈希摘要。编码可以是'hex','binary'或者'base64'。 crypto.createHmac(algorithm, key) 通过指定算法(algorithm)和密钥(key)建立并返回一个加密的hmac 对象。 和createhash 函数一样,参数algorithm 的选择依赖于node 运行平台上OpenSSL 所支持的有效算法,key 是要使 用的HMAC 私钥。 hmac.update(data) 更新指定数据(参数data)的hmac 的内容,当以流的方式接收新数据(参数data)时,可多次调用此方法。 hmac.digest(encoding='binary') 计算所有传递来数据的hmac 摘要。编码可以是'hex','binary'或者'base64' 。 crypto.createCipher(algorithm, key) 通过指定算法(algorithm )和密钥(key)建立并返回一个cipher 对象 算法参数的内容依赖于OPENSSL 所支持的有效算法,例如aes192等等。OpenSSL 的list-cipher-algorithms 将显 示有效的cipher 算法。 cipher.update(data, input_encoding='binary', output_encoding='binary') 更新参数data 所代表的cipher , input_encodin 是初始数据的编码, 编码可以是'utf8','ascii' 或者'binary' 。 output_encoding 参数指定了加密数据的输出编码,编码可以是'binary','base64'或者'hex'。 返回加密后的内容,当以流的方式接收新数据时,可多次调用此方法。 cipher.final(output_encoding='binary') 返回剩余的已加密内容,output_eocoding 可以是'binary','ascii','utf8'中的一个。 crypto.createDecipher(algorithm, key) 通过参数algorithm 和key 建立并返回一个decipher 对象。这是前面cipher 对象的一个镜像. decipher.update(data, input_encoding='binary', output_encoding='binary') 更新参数data 所代表的decipher ,input_encoding 是初始数据的编码,编码可以是'binary','base64'或者'hex'。 output_encoding 参数指定了已解密的铭文的输出编码,编码可以是'binary','base64'或者'hext' decipher.final(output_encoding='binary') 返回其余解密后的文本。参数output_encoding 是'binary', 'ascii' or 'utf8'中的一个. crypto.createSign(algorithm) 通过参数algorithm 建立并返回一个signing 对象。根据当前openSSL 版本,penssl 的list-public-key-algorithms 将 显示singning 的有效算法.例如'RSA-SHA256'. signer.update(data) 用参数data 更新signer 对象,当以流的方式接收新数据时,可多次调用此方法。 signer.sign(private_key, output_format='binary') 计算所有signer 里已经更新的数据的签名。private_key 是一个字符串,包含用于签名的PEM 编码的私钥。 返回用output_format 指定编码的签名,编码可以是'binary', 'hex' or 'base64' crypto.createVerify(algorithm) 通过指定algorithm 建立并返回一个verification 对象.这是上面signing 对象的一个镜像。 verifier.update(data) 用新数据(参数data)更新verifyer 对象,当以流的方式接收新数据时,可多次调用此方法。 verifier.verify(public_key, signature, signature_format='binary') 用包含有PEM 编码的公钥,即参数public_key 来验证电子签名数据。参数signature 是先前用此数据计算的签 名,参数signature_format 可以是'binary', 'hex' or 'base64'. 根据签名和公钥对数据的验证结果返回true 或false。 net.Stream TCP流模块 DNS 域名解析