node.js 中的加密解密算法

const crypto = require('crypto')
const fs = require('fs')

// let secret_key = 'My name is Tengxi'
// // 加密
// const hash = crypto.createHmac('sha256', secret_key).update('Happy new Year').digest('hex')
// console.log('加密的结果')
// console.log(hash)

// MD5(单向散列算法):输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);不同的输入得到的不同的结果(唯一性);根据128位的输出结果不可能反推出输入的信息(不可逆)
// 把上述例子中sha256改成md5就是md5加密算法


// HMAC
// 用于创建加密的 HMAC 摘要,不能使用new直接创建HMAC对象
// 用法
// 作为可读写的流,其中写入数据以在可读侧生成计算后的 HMAC 摘要。
// 使用 hmac.update() 和 hmac.digest() 方法生成计算后的 HMAC 摘要
// sha256是算法名称,哈希值长度是256位 安全散列算法(Secure Hash Algorithm)SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512是一系列
// hex 表示十六进制
// digest() 默认返回二进制结果 如果提供了encoding返回字符串 否则返回buffer digest以后不能多次调用hash对象,会引起错误


// HMAC 对象作为流的用法
// const hmac = crypto.createHmac('sha256', secret_key)
// hmac.on('readable', () => {
//   // 哈希流只会生成一个元素。
//   const data = hmac.read()
//   if (data) {
//     console.log(data.toString('hex'))
//   }
// });

// hmac.write('Happy new Year')
// hmac.end()

// 公钥加密解密
// 公钥是用于创建只有私钥的拥有者能够读出的加密数据,以及对私钥的拥有者的签名进行验证
// 私钥是用于解密数据以及对数据进行签名
// 用Cipher加密
// 创建cipher对象
// AES-256-CBC: 高级加密标准 256秘钥长度 CBC模式
// AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)
const password = '123456'
const data = '生下来活下去'
const aseEncode = function (data, password) {
    const cipher = crypto.createCipher('aes192', password) // 创建cipher对象
    let crypted = cipher.update(data, 'utf-8', 'base64') // update方法来指定需要被加密的数据, 如果第二个参数不指定的话,第一个参数只能是buffer对象,第三个参数是输出加密数据时候的编码格式,可选值为hex,binary,base64,不写返回存了加密数据的buffer对象
    crypted += cipher.final('base64') // 在使用了cipher对象的final方法后,不能再向cipher对象中追加加密数据
    return crypted
}

console.log(aseEncode(data, password))


const secret_data = 'e6b48f8237decd24a970186ad6ac998757f4b06490d32390dbd4081ee415a43d'
const aseDecode = function (data, password) {
    const decipher = crypto.createDecipher('aes192', password)
    let originData = decipher.update(data, 'base64', 'utf-8')
    originData += decipher.final('utf-8')
    return originData
}

console.log(aseDecode(secret_data, password))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值