蚂蚁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 45|回复: 0

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

[复制链接]

1923

主题

1

好友

1591

积分

管理员

Rank: 64Rank: 64Rank: 64Rank: 64

  • TA的每日心情
    奋斗
    2016-1-22 16:23
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    荣誉管理 论坛元老 热心会员 活跃会员 最佳新人 灌水之王

    发表于 7 天前 |显示全部楼层
    NODE.JS加密模块CRYPTO常用方法介绍
    使用require('crypto')调用加密模块。
    加密模块需要底层系统提供OpenSSL的。它提供了一种安全凭证的封装方式,可以用于HTTPS安全网络以及普通HTTP连接。
    该模块还提供了一套针对OpenSSL的hash(哈希),hmac(密钥哈希),cipher(编码),decipher(解码),sign(签名)以及verify(验证)等方法的封装。
    cryptocreateCredentials(details)
    创建一个凭证对象,可选参数details为一个带键值的字典:
    key:为字符串型,PEM编码的私钥。
    cert:为字符串型,PEM编码的认证证书。
    ca:字符串形式的PEM编码可信CA证书,或证书列表。
    如果没有给出'ca'的详细内容,那么nodejs将会使用默认的公开受信任列表,该表位于mxrmozillaorg/mozilla/source/security/nss/lib/ckfw/builtins/certdatatxt。

    cryptocreateHash(algorithm)
    创建并返回一个hash对象,它是一个指定算法的加密hash,用于生成hash摘要。
    参数algorithm可选择系统上安装的OpenSSL版本所的算法。例如:'sha1', 'md5', 'sha256', 'sha512'等。在近期发行的版本中,openssl list-message-digest-algorithms会显示这些可用的摘要算法。
    hashupdate(data)
    更新hash的内容为指定的data。当使用流数据时可能会多次调用该方法。
    hashdigest(encoding='binary')
    计算所有传入数据的hash摘要。参数encoding(编码方式)可以为'hex', 'binary' 或者'base64'。
    cryptocreateHmac(algorithm, key)
    创建并返回一个hmac对象,它是一个指定算法和密钥的加密hmac。
    参数algorithm可选择OpenSSL的算法 - 参见上文的createHash。参数key为hmac所使用的密钥。
    hmacupdate(data)
    更新hmac的内容为指定的data。当使用流数据时可能会多次调用该方法。
    hmacdigest(encoding='binary')
    计算所有传入数据的hmac摘要。参数encoding(编码方式)可以为'hex', 'binary' 或者'base64'。
    cryptocreateCipher(algorithm, key)
    使用指定的算法和密钥创建并返回一个cipher对象。
    参数algorithm可选择OpenSSL的算法,例如'aes192'等。在最近的发行版中,openssl list-cipher-algorithms会显示可用的加密的算法。
    cipherupdate(data, input_encoding='binary', output_encoding='binary')
    使用参数data更新要加密的内容,其编码方式由参数input_encoding指定,可以为 'utf8', 'ascii'或者'binary'。参数output_encoding指定了已加密内容的输出编码方式,可以为 'binary', 'base64'或'hex'。
    返回已加密的内容,当使用流数据时可能会多次调用该方法。
    cipherfinal(output_encoding='binary')
    返回所有剩余的加密内容,output_encoding输出编码为'binary', 'ascii'或'utf8'其中之一。
    cryptocreateDecipher(algorithm, key)
    使用给定的算法和密钥创建并返回一个解密对象。该对象为上述加密对象的反向运算。
    decipherupdate(data, input_encoding='binary', output_encoding='binary')
    使用参数data更新要解密的内容,其编码方式为'binary','base64'或'hex'。参数output_encoding指定了已解密的明文内容的输出编码方式,可以为 'binary','ascii'或'utf8'。
    decipherfinal(output_encoding='binary')
    返回全部剩余的已解密的明文,其output_encoding' 为'binary', 'ascii'或'utf8'`其中之一。
    cryptocreateSign(algorithm)
    使用给定的算法创建并返回一个签名器对象。在现有的OpenSSL发行版中,openssl list-public-key-algorithms会显示可用的签名算法,例如:'RSA-SHA256'。
    signerupdate(data)
    使用data参数更新签名器对象。当使用流数据时可能会多次调用该方法。
    signersign(private_key, output_format='binary')
    对所有传入签名器的数据计算其签名。private_key为字符串,它包含了PEM编码的用于签名的私钥。
    返回签名,其output_format输出可以为'binary', 'hex' 或者'base64'。
    cryptocreateVerify(algorithm)
    使用给定算法创建并返回一个验证器对象。它是上述签名器对象的反向运算。
    verifierupdate(data)
    使用data参数更新验证器对象。当使用流数据时可能会多次调用该方法。
    verifierverify(cert, signature, signature_format='binary')
    使用参数cert和signature验证已签名的数据,cert为经过PEM编码的公钥字符串,signature为之前已计算的数据的签名,signature_format可以为'binary','hex' 或者'base64'。
    根据对数据和公钥进行签名有效性验证的结果,返回true或者false。
    当你需要一个不可逆的加密代码如何写
    复制代码 代码如下:
    var text = "123|12312312123123121231231212312312123123121231231212312312";
    var hasher=cryptocreateHash("md5");
    hasherupdate(text);
    var hashmsg=hasherdigest('hex');//hashmsg为加密之后的数据
    当你需要一个加密和解密的环境时
    复制代码 代码如下:
    var key="asdhjwheru*asd123-123";//加密的秘钥
    var text = "123|12312312123123121231231212312312123123121231231212312312";
    var crypted =cipherupdate(text,'utf8','hex');
    crypted+=cipherfinal('hex');
    var message=crypted;//加密之后的值
    var decipher = cryptocreateDecipher('aes-256-cbc',key);
    var dec=decipherupdate(message,'hex','utf8');
    dec+= decipherfinal('utf8');//解密之后的值
    PS:关于加密技术,本站还提供了如下加密工具供大家参考使用:
    MD5在线加密工具:toolsjb51net/password/CreateMD5Password
    Escape加密/解密工具:toolsjb51net/password/escapepwd
    在线SHA1加密工具:toolsjb51net/password/sha1encode
    短链(短网址)在线生成工具:toolsjb51net/password/dwzcreate
    短链(短网址)在线还原工具:toolsjb51net/password/unshorturl
    高强度密码生成器:toolsjb51net/password/CreateStrongPassword
    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    蚂蚁站长论坛推荐上一条 /1 下一条

    QQ|Archiver|手机版|广告服务|蚂蚁站长-站长之家 ( 黔ICP备16008478号-1  

    GMT+8, 2017-10-19 07:41

    Powered by 站长论坛

    © 2007-2013 Jzant.com Inc.

    回顶部