nodeJS:MD5加密

MD5

  • md5:不是一种加密算法,是用来做文件校验的
  • 作用:让大容量信息在数字签名软件签署私人秘钥前被"压缩"成一种保密格式,也就是把一个任意长度的字节串变换成一定长度的十六进制数字串(32个字符)
    • 一致性验证
    • 数字签名
    • 安全访问认证
  • 特点:不可逆
    • 输入两个不同的明文不会得到相同的输出值
    • 根据输出值,不能得到原始的明文,即过程不可逆

MD5的性质

  • 压缩性:任意长度的数据,转换为固定长度的MD5值
  • 容易计算:从原数据计算出MD5值很容易
  • 抗修改:对原数据进行任何改动,最终得到的MD5值都有很大的区别
  • 弱抗碰撞:已知原数据和其MD5值,找一个具有相同MD5值的数据(即伪造数据)是非常困难的。

HMAC

  • 进一步提升MD5加密安全性
  • 是一个"秘钥",对明文进行加密,并做"两次散列",但使用它得到的还是32个字符
  • 用HMAC
    • 利用哈希算法,以一个秘钥和一个信息为输入,生成一个消息摘要作为输出

nodeJS中的crypto

  • crypto.createHash() : 创建一个Hash实例,不能使用new关键字创建对象
    • hash.update()
    • hash.digest()
  • create.createHmac() : 创建一个Hmac实例,不能使用new关键字创建对象
    • hmac.update()
    • hmac.digest()
crypto.createHash()
// 必须引入crypto
const crypto = require('crypto'); 
function md5(data){
  // 以md5的格式创建一个哈希值
  let hash = crypto.createHash('md5');
  return hash.update(data).digest('base64');
}
let mima = md5(md5('dandan')+'li'));
crypto.createHmac()
// 必须引入crypto
const crypto = require('crypto');
function hmac(data){
  let hmac = crypto.createHmac('md5','后台传入/任意值');
  return hmac.update(data).digest('base64');
}
let mima = hmac('dandan');

推荐阅读更多精彩内容

  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 3,405评论 0 5
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    voyagelab阅读 5,738评论 5 29
  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 775评论 0 6
  • 1 基础 1.1 对称算法 描述:对称加密是指加密过程和解密过程使用相同的密码。主要分:分组加密、序列加密。 原理...
    御浅永夜阅读 471评论 0 2
  • 一个特别的女人 昨天看到一个特别的女人。外形非常瘦,穿着黑色的长款呢子大衣,下面是黑色的打底裤配一双及膝长靴,一头...
    维也纳泪珠阅读 43评论 0 1