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 获取页面元素的位置的代码
Sep 25 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
微信小程序实现拍照画布指定区域生成图片
Jul 18 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
Apr 15 Javascript
JS算法教程之字符串去重与字符串反转
Dec 15 Javascript
利用uni-app生成微信小程序的踩坑记录
Apr 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中接口的应用
2015/08/12 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
JavaScript 对象模型 执行模型
2010/10/15 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
使用focus方法让光标默认停留在INPUT框
2014/07/29 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
js获取地址栏参数的两种方法
2017/06/27 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Python聊天室实例程序分享
2016/01/05 Python
Python常用的爬虫技巧总结
2016/03/28 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
Python命令行解析模块详解
2018/02/01 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
喜之郎果冻广告词
2014/03/20 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
社区务虚会发言材料
2014/10/20 职场文书
健康证明
2015/06/19 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
React更新渲染原理深入分析
2022/12/24 Javascript