NODE.JS加密模块CRYPTO常用方法介绍


Posted in Javascript onJune 05, 2014

使用require('crypto')调用加密模块。

加密模块需要底层系统提供OpenSSL的支持。它提供了一种安全凭证的封装方式,可以用于HTTPS安全网络以及普通HTTP连接。

该模块还提供了一套针对OpenSSL的hash(哈希),hmac(密钥哈希),cipher(编码),decipher(解码),sign(签名)以及verify(验证)等方法的封装。

crypto.createCredentials(details)

创建一个凭证对象,可选参数details为一个带键值的字典:
key:为字符串型,PEM编码的私钥。
cert:为字符串型,PEM编码的认证证书。
ca:字符串形式的PEM编码可信CA证书,或证书列表。

如果没有给出'ca'的详细内容,那么node.js将会使用默认的公开受信任列表,该表位于http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt。

crypto.createHash(algorithm)

创建并返回一个hash对象,它是一个指定算法的加密hash,用于生成hash摘要。

参数algorithm可选择系统上安装的OpenSSL版本所支持的算法。例如:'sha1', 'md5', 'sha256', 'sha512'等。在近期发行的版本中,openssl list-message-digest-algorithms会显示这些可用的摘要算法。

hash.update(data)

更新hash的内容为指定的data。当使用流数据时可能会多次调用该方法。

hash.digest(encoding='binary')

计算所有传入数据的hash摘要。参数encoding(编码方式)可以为'hex', 'binary' 或者'base64'。

crypto.createHmac(algorithm, key)

创建并返回一个hmac对象,它是一个指定算法和密钥的加密hmac。

参数algorithm可选择OpenSSL支持的算法 - 参见上文的createHash。参数key为hmac所使用的密钥。

hmac.update(data)

更新hmac的内容为指定的data。当使用流数据时可能会多次调用该方法。

hmac.digest(encoding='binary')

计算所有传入数据的hmac摘要。参数encoding(编码方式)可以为'hex', 'binary' 或者'base64'。

crypto.createCipher(algorithm, key)

使用指定的算法和密钥创建并返回一个cipher对象。

参数algorithm可选择OpenSSL支持的算法,例如'aes192'等。在最近的发行版中,openssl list-cipher-algorithms会显示可用的加密的算法。

cipher.update(data, input_encoding='binary', output_encoding='binary')

使用参数data更新要加密的内容,其编码方式由参数input_encoding指定,可以为 'utf8', 'ascii'或者'binary'。参数output_encoding指定了已加密内容的输出编码方式,可以为 'binary', 'base64'或'hex'。

返回已加密的内容,当使用流数据时可能会多次调用该方法。

cipher.final(output_encoding='binary')

返回所有剩余的加密内容,output_encoding输出编码为'binary', 'ascii'或'utf8'其中之一。

crypto.createDecipher(algorithm, key)

使用给定的算法和密钥创建并返回一个解密对象。该对象为上述加密对象的反向运算。

decipher.update(data, input_encoding='binary', output_encoding='binary')

使用参数data更新要解密的内容,其编码方式为'binary','base64'或'hex'。参数output_encoding指定了已解密的明文内容的输出编码方式,可以为 'binary','ascii'或'utf8'。

decipher.final(output_encoding='binary')

返回全部剩余的已解密的明文,其output_encoding' 为'binary', 'ascii'或'utf8'`其中之一。

crypto.createSign(algorithm)

使用给定的算法创建并返回一个签名器对象。在现有的OpenSSL发行版中,openssl list-public-key-algorithms会显示可用的签名算法,例如:'RSA-SHA256'。

signer.update(data)

使用data参数更新签名器对象。当使用流数据时可能会多次调用该方法。

signer.sign(private_key, output_format='binary')

对所有传入签名器的数据计算其签名。private_key为字符串,它包含了PEM编码的用于签名的私钥。

返回签名,其output_format输出可以为'binary', 'hex' 或者'base64'。

crypto.createVerify(algorithm)

使用给定算法创建并返回一个验证器对象。它是上述签名器对象的反向运算。

verifier.update(data)

使用data参数更新验证器对象。当使用流数据时可能会多次调用该方法。

verifier.verify(cert, signature, signature_format='binary')

使用参数cert和signature验证已签名的数据,cert为经过PEM编码的公钥字符串,signature为之前已计算的数据的签名,signature_format可以为'binary','hex' 或者'base64'。

根据对数据和公钥进行签名有效性验证的结果,返回true或者false。

当你需要一个不可逆的加密代码如何写

var text = "123|12312312123123121231231212312312123123121231231212312312";

var hasher=crypto.createHash("md5");

hasher.update(text);

var hashmsg=hasher.digest('hex');//hashmsg为加密之后的数据

当你需要一个加密和解密的环境时

var key="asdhjwheru*asd123-123";//加密的秘钥

var text = "123|12312312123123121231231212312312123123121231231212312312";

var crypted =cipher.update(text,'utf8','hex');

crypted+=cipher.final('hex');

var message=crypted;//加密之后的值

var decipher = crypto.createDecipher('aes-256-cbc',key);

var dec=decipher.update(message,'hex','utf8');

dec+= decipher.final('utf8');//解密之后的值
Javascript 相关文章推荐
Javascript 页面模板化很多人没有使用过的方法
Jun 05 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
javascript制作坦克大战全纪录(2)
Nov 27 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
简单实现异步编程promise模式
Jul 31 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
May 16 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
深入解析koa之中间件流程控制
Jun 17 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
原生js中运算符及流程控制示例详解
Jan 05 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 #Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 #Javascript
javascript移动设备Web开发中对touch事件的封装实例
Jun 05 #Javascript
删除条目时弹出的确认对话框
Jun 05 #Javascript
判断复选框是否被选中的两种方法
Jun 04 #Javascript
jQuery页面加载初始化常用的三种方法
Jun 04 #Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 #Javascript
You might like
用PHP解决的一个栈的面试题
2014/07/02 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
JS调用打印机功能简单示例
2016/11/28 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
vue.js iview打包上线后字体图标不显示解决办法
2020/01/20 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python实现的石头剪子布代码分享
2014/08/22 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Python判断有效的数独算法示例
2019/02/23 Python
python交易记录整合交易类详解
2019/07/03 Python
HTML5标签大全
2016/11/23 HTML / CSS
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
项目专员岗位职责
2013/12/04 职场文书
在校大学生个人的自我评价
2014/02/13 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
年终考核实施方案
2014/05/26 职场文书
大学团日活动总结书
2015/05/11 职场文书
入党介绍人意见范文
2015/06/01 职场文书
高中历史教学反思
2016/02/19 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书