`
快乐_虫
  • 浏览: 7519 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

NODE.JS加密模块CRYPTO常用方法介绍

    博客分类:
  • Node
阅读更多

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

 

此文原址:http://www.jb51.net/article/50668.htm

分享到:
评论

相关推荐

    node.js的加密模块.zip

    这个“node.js的加密模块.zip”很可能包含了一个名为“node-crypto-master”的项目,该项目可能是对Node.js加密模块的一个详细示例或者教程。在这个项目中,我们可以深入学习和理解如何使用Node.js的加密API来实现...

    Node.js开发实战详解源代码

    HTTP简单服务的搭建、Node.js静态资源管理、文件处理、Cookie和Session实践、Crypto模块加密、Node.js与Nginx配合;UDP服务器的搭建、Node.js与PHP之间合作;Node.js的实现机制、Node.js的原生扩展与应用;Node.js的...

    Node.js从入门到精通

    8. **数据加密**:crypto模块提供了加密和哈希算法,用于数据的安全存储和传输。 9. **路由应用实战**:基础教程结束后,通常会进行路由应用的实战,通过路由控制请求的流向,实现不同URL对应的不同功能。 10. **...

    Node.js-互联网的标准库

    9. **加密模块(crypto)**:提供了各种加密算法,如哈希、对称加密、非对称加密等,用于数据安全。 10. **全局对象和进程**:Node.js的全局对象process代表当前运行的进程,可以获取命令行参数、环境变量,以及进行...

    Node.js-node.js中文资料导航

    Node.js 包含了许多内置模块,如 `fs`(文件系统)用于读写文件,`http` 用于创建 HTTP 服务器,`path` 处理文件路径,`crypto` 提供加密算法等。这些模块使得开发者可以快速构建网络应用。 **Node.js的包管理器-...

    Node.js-FirefoxSend文件共享实验允许您将加密文件发送给其他用户

    - 为了保护文件的隐私,FirefoxSend 可能使用 Node.js 的加密模块(如 `crypto`)对上传的文件进行加密。这样,即使文件存储在服务器上,没有密钥的任何人都无法解密和访问。 9. **安全性与持久化** - 服务可能...

    如何在Node.js中加密和解密数据.pdf

    通过以上介绍,我们不仅了解了如何在Node.js中使用`crypto`模块来加密和解密各种类型的数据,还深入探讨了文本、缓冲区和流的加密解密方法。这对于构建安全可靠的Web应用具有重要的意义。在未来的工作中,你可以根据...

    4.nodejs和java的AES加密结果保持一致.doc

    在 Node.js 中,使用 crypto 模块的 createCipher 方法创建加密对象,使用 createDecipher 方法创建解密对象。在 Java 中,使用 javax.crypto 包的 Cipher 类创建加密和解密对象。 此外,还需要确保密钥的安全性,...

    Node.js-node-crypto-api提供一个API来消费来自多个加密货币市场的数据

    在 Node.js 的生态中,有许多丰富的库和模块,其中 `node-crypto-api` 是一个专门用于处理加密货币市场数据的 API 工具。这个 API 允许开发者轻松地获取和处理来自多个加密货币市场的实时或历史数据,包括但不限于...

    salt_hash.zip_Node.js_密码加密与解密_密码加盐

    Node.js作为一个流行的JavaScript运行环境,提供了丰富的库和模块来处理这些需求。本案例主要关注的是如何利用Node.js的crypto模块来进行密码加密与解密,并且涉及到了密码加盐(salt)的策略。以下是对这两个关键...

    crypto-promise:Promise版本的Node.js加密模块

    加密承诺 Promise版本的Node.js加密模块。例子const crypto = require ( 'crypto-promise' )const test = async ( ) => { const hash = await crypto . hash ( 'md5' ) ( 'hello' ) hash . toString ( 'hex' ) // 5d...

    Node.js中密码学的7个有用示例.zip

    在Node.js中,可以通过`crypto.createCipheriv()`创建一个对称加密流,然后使用`update()`和`final()`方法处理数据。 3. **非对称加密**: 非对称加密如RSA,使用一对公钥和私钥,公钥用于加密,私钥用于解密。在...

    Node.js API 0.8.18离线手册

    除了这些核心模块,Node.js 0.8.18还包括了其他如Crypto(加密)、Zlib(压缩)、TLS/SSL(安全套接层)等模块,为开发者提供了丰富的功能。在实际开发中,还可以利用npm(Node.js包管理器)安装第三方模块,扩展...

    crypto-js.js的js库

    通常,一个JavaScript库会包含多个.js文件,每个文件对应不同的功能模块,或者是一个压缩过的单一文件,例如`crypto-js.min.js`,这种形式的文件适用于生产环境,因为它体积小,加载速度快。 **知识点详解:** 1. ...

    crypto-js4.1.1版本,js在crypto-js文件夹里面

    《深入理解crypto-js4.1.1:JavaScript加密库在前端安全中的应用》 在现代Web开发中,数据安全已经成为至关重要的环节。特别是在JavaScript环境中,由于其代码的开放性,如何保护用户信息不被窃取或篡改成为了一个...

    Node.js-CopyCat-基于Node.js的通用MITMWeb服务器

    此外,它可能还使用了如`fs`模块来读写文件(如证书和日志),以及`crypto`模块来进行加密和解密操作。 **应用场景** 1. **渗透测试**:CopyCat可以用于测试企业网络的安全性,发现潜在的漏洞和弱点。 2. **安全...

    Node.JS Notes for Professional

    Node.js 提供了一些安全相关的模块,如 `crypto` 用于加密解密,`https` 支持 HTTPS 协议,以及第三方库如 helmet 提供HTTP头部安全设置,帮助开发者构建更安全的应用。 ### 10. 模块系统 Node.js 采用 CommonJS ...

Global site tag (gtag.js) - Google Analytics