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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
Oct 31 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
Javascript中各种trim的实现详细解析
Dec 10 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
vue 计时器组件的实现代码
Sep 14 Javascript
详解JavaScript的数据类型以及数据类型的转换
Apr 20 Javascript
Javascript读取上传文件内容/类型/字节数
Apr 30 Javascript
vuex actions异步修改状态的实例详解
Nov 06 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缩小png图片不损失透明色的解决方法
2013/12/25 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
PHP加密解密函数详解
2015/10/28 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python实现的文件同步服务器实例
2015/06/02 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
简单了解python代码优化小技巧
2019/07/08 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
银行实习生的自我评价
2013/12/09 职场文书
买房子个人收入证明
2014/01/16 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
党员个人对照检查材料
2014/10/01 职场文书
2014年仓库工作总结
2014/11/20 职场文书