使用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');//解密之后的值

PS:关于加密技术,本站还提供了如下加密工具供大家参考使用:

node 加密解密模块_NODE.JS加密模块CRYPTO常用方法介绍相关推荐

  1. node 加密解密模块_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

  2. node 加密解密模块_聊聊Node加密模块crypto加密原理的那些事

    crypto是node.js中实现加密和解密的模块 在node.js中,使用OpenSSL类库作为内部实现加密解密的手段 OpenSSL是一个经过严格测试的可靠的加密与解密算法的实现工具. 散列(哈希 ...

  3. node 加密解密模块_NodeJS之crypto模块公钥加密及解密

    NodeJS有以下4个与公钥加密相关的类. Cipher: 用于加密数据: Decipher: 用于解密数据: Sign: 用于生成签名: Verify: 用于验证签名: 在使用公钥加密技术时,需要使 ...

  4. java加密解密代码_base64位加密解密原理及js代码实现

    base64位加密解密原理及js代码实现 在网上找了很多关于Base64加密解密的原理以一个比较通俗易懂的方式理解整理了一下大致原理如下 先上base64对照表 #加密 #1:将明文对照以acsii码 ...

  5. 使用node加密解密数据,创建Hash/HMAC,并生成签名与验证签名

    1.数据加密与解密 主要使用了node的crypto模块的Cipher与Decipher类来加密解密,加密与解密的方法主要有以下几种: 1.1 使用Cipher与Decipher对象作为流来加密解密 ...

  6. node.js fs模块_Node.js中的fs模块简介

    node.js fs模块 fs, short for File System, is one of the most basic and useful modules in Node. In this ...

  7. nodejs没有net模块_Node.js实战16:用http模块创建web服务器

    Nodejs的http模块,是基于net.server,经过c++二次封装,也是nodejs的核心模块. 功能比net.server更强,可解析和操作更多细节内容,如值.content-length. ...

  8. Python crypto模块实现RSA和AES加密解密

    Python crypto模块实现RSA和AES加密解密 Python的crypto是用于RSA加密解密,AES加密解密的. 一.RSA和AES简介 RSA加密算法是一种非对称加密算法.RSA 是19 ...

  9. Crypto++安装和简单使用RSA加密解密

    Crypto++安装和简单使用 一.前言 二.下载 三.安装 四.使用 五.RSA加密/解密 (一)生成密钥/公钥 (二)OAEP加密/解密 六.RSA加密/解密的源码 一.前言 能搜索这个的估计都知 ...

最新文章

  1. 漫谈 REST 架构风格
  2. 函数指针与指针函数的区别
  3. linux常用命令1
  4. 成功解决AttributeError: module 'numpy' has no attribute 'integer'
  5. 压力测试工具Jemeter安装及使用
  6. python模拟鼠标拖动_python模拟鼠标拖动操作
  7. 【渝粤教育】广东开放大学 数据库原理与应用 形成性考核 (1)
  8. fat32转ntfs工具无损数据安全转换_干货真香! 无损制作UD三分区教程,新手小白的福利来了...
  9. NAT负载均衡_ftp
  10. 博弈论初步(SG函数)
  11. java随机一个数字和字母_java怎么实现随机4个带有数字和字母的验证码?
  12. 使用C# Detach和Attach 数据库
  13. Atitit 常见的bpmn事件类型与触发机制 目录 1. 事件定义概述 2 2. 按照事件的位置分类 2 2.1. 对事件按照位置进行分类,主要可分为开始事件、中间事件和结束事件, 2 3. 按照
  14. 原生Java萝卜影视4.0.5源码/完美修复完整版萝卜影视源码
  15. python 点分十进制IP地址转16进制字符串
  16. 代码大全 服装尺寸图html,国际标准服装尺码对照表大全-实用衣服尺寸对照表...
  17. C++ 全局变量 静态全局变量 傻傻分不清
  18. 【青少年编程】【三级】幻影小猫
  19. 全网多种方法解决未连接到互联网 代理服务器出现问题,或者地址有误的错误
  20. 分糖果 2021T1

热门文章

  1. 使用windowManager实现音乐播放器(悬浮框)效果
  2. 响应式中解决图片大小不一样,导致盒子高度不一样的问题
  3. python发送json请求_使用Python请求发布JSON
  4. python dataframe取一列_python DataFrame列运算
  5. Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
  6. c语言最佳适应算法实验报告,操作系统实验报告---主存分配与回收(最佳适应算法)...
  7. 服务器环境~某个页面无法访问的处理
  8. java 泛型详解、Java中的泛型方法、 java泛型详解
  9. input 打开文件夹事件委托
  10. Rocketmq源码分析(一)整体架构