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 相关文章推荐
ext读取两种结构的xml的代码
Nov 05 Javascript
jquery 经典动画菜单效果代码
Jan 26 Javascript
添加JavaScript重载函数的辅助方法2
Jul 04 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
javascript实现完美拖拽效果
May 06 Javascript
javascript常用方法总结
May 14 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
Aug 25 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 Javascript
JavaScript实现英语单词题库
Dec 24 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引用效率问题分析
2012/03/23 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
json 定义
2008/06/10 Javascript
javascript基本类型详解
2014/11/28 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
web.py获取上传文件名的正确方法
2014/08/26 Python
Python的另外几种语言实现
2015/01/29 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
暑期社会实践方案
2014/02/05 职场文书
《学会待客》教学反思
2014/02/22 职场文书
音乐教育感言
2014/03/05 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
考察现实表现材料
2014/05/19 职场文书
网吧消防安全责任书
2014/07/29 职场文书
创业计划书之校园超市
2019/09/12 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers