nodejs crypto 加密模块分析及ASE加密、解密的实现

crypto 加密模块

  1. crypto 模块提供了加密功能,包括对OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的以整套封装。

  2. 使用 require('crypto') 来访问该模块

  3. 查看nodejs支持的加密算法,

    • 使用 crypto.getCiphers(),如下所示
        const crypto = require('crypto')
        crypto.getCiphers()
      
    • 得到的是一个比较大的数组,这里列举其中的几个元素:

      [
      ‘aes-128-cbc’, ‘aes-128-ccm’, ‘aes-128-cfb’,
      ‘aes256’, ‘aes256-wrap’, ‘aria-128-cbc’,
      ‘aria-128-ccm’, ‘aria-128-cfb’, ‘aria-128-cfb1’,
      ‘bf-cbc’, ‘bf-cfb’, ‘bf-ecb’,
      ‘camellia192’, ‘camellia256’, ‘cast’,
      ‘cast-cbc’,
      … 71 more items
      ]

    • 这里重点介绍 ASE 加密
      1. ASE加密是高级加密标准,为美国联邦政府采用的一种区块加密标准,高级加密标准已然成为对称密钥加密中最流行的算法之一。

      2. ASE使用的密钥长度可以128位、192位或256位,所以你可以看到加密算法:aes-128/196/256,表示的都是密钥的位数。最后一段是AES的工作模式,最常用的是 ECB、CBC、CFB、和OFB四种。

      3. ASE 加密时的key(原始密钥) 和 iv(初始化向量的长度)

        长度 密钥长度 向量长度
        128位 16 16
        192位 24 16
        256位 32 16
  4. crypto.scrypt(password,salt,keylen[,options],callback) 方法:

    • scrypt() 是一个异步的密钥派生函数,被设计为在计算和内存方面的成本都非常高,目的是使它无法暴力破解。
    • salt: 盐值,应该尽可能独特。建议盐值是随机的并且至少16个字节长。
    • keylen: 生成的密钥的长度。
    • callback 回调函数有两个参数:errderivedKey, 当密钥派生失败时, err 是一个异常对象,否则 err 为 null。 derivedKey 会作为 Buffer 传给回调。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值