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 字符串连接性能优化
Dec 20 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 Javascript
ionic组件ion-tabs选项卡切换效果实例
Aug 27 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
Seajs是什么及sea.js 由来,特点以及优势
Oct 13 Javascript
设置jquery UI 控件的大小方法
Dec 12 Javascript
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
JS对象属性的检测与获取操作实例分析
Mar 17 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 一元分词算法
2009/11/30 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
accesskey 提交
2006/06/26 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
js实现简单的打印表格
2020/01/15 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python变量和字符串详解
2017/04/29 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python数据类型强制转换实例详解
2020/06/22 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
施工人员岗位职责
2013/12/12 职场文书
公司中秋节活动方案
2014/02/12 职场文书
文案策划求职信
2014/03/18 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
Python中Permission denied的解决方案
2021/04/02 Python