1. 概念

MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法)。
主要用来确保消息的完整性和一致性。
常见的应用场景有:密码保护、下载文件校验等。

2. 应用场景

① 文件完整性校验

比如从网上下载一个软件,一般网站都会将软件的md5值附在网页上,用户下载完软件后,可对下载到本地的软件进行md5运算,然后跟网站上的md5值进行对比,确保下载的软件是完整的(或正确的)。

② 密码保护

将md5后的密码保存到数据库,而不是保存明文密码,避免拖库等事件发生后,明文密码外泄。

③ 防篡改

比如数字证书的防篡改,就用到了摘要算法。(当然还要结合数字签名等手段)

3. 密码保护

① 安全性

  1. 将明文密码保存到数据库是很不安全的,最起码也要进行md5后进行保存
  2. 比如用户密码是123456,md5加密后,得到结果:e10adc3949ba59abbe56e057f20f883e

② 好处

  1. 防内部攻击
    网站主人不知道用户的明文密码,避免网站主人拿着用户明文密码做坏事
  2. 防外部攻击
    如果网站被黑客入侵,黑客也只能拿到md5加密后的密码,而不是用户的明文密码

4. 单纯对密码进行md5不安全

  1. 当攻击者知道算法是md5后,可以将实现准备好的常见明文密码的md5值来进行匹配暴力破解
  2. 密码加盐
    在密码的特定位置插入特定字符串后,在对修改的字符串进行md5运算
    注意:
    ① 同样的密码,当“盐”值不一样的时候,md5的值差异非常大
    ② 通过密码加盐,可以防止最初级的暴力破解,如果攻击者事先不知道“盐”值,破解的难度就会非常大
  3. 密码加盐增强:随机盐值

5. 使用blueimp-md5第三方类库 文档

  1. 安装npm install blueimp-md5
  2. 引入import md5 from 'blueimp-md5'
  3. 自定义盐值const S_KEY = '@WaLk1314?.ItikE.Com.#';
  4. 加密const user_pwd = md5(req.body.user_pwd + S_KEY) || '';

Node.js:使用blueimp-md5进行MD5加密相关推荐

  1. python aes padding_使用PKCS7Padding在python和Node.js之间进行AES加密

    已解决 密码学Python 使用PKCS7Padding在python和Node.js之间进行AES加密10 我试图用Node.js中的pkcs7填充来解密消息没有成功. 此消息已加密并从Python ...

  2. java nodejs aes_Java与Node.js利用AES加密解密出相同结果的方法示例

    前言 工作中遇到nodejs端通过aes加密,安卓客户端Java解密,同样nodejs也需要解密安卓客户端加密过来的内容,发现两个加密结果不一样,查询资料发现java端需要对密钥再MD5加密一遍,以下 ...

  3. js计算出来的文件md5值跟java计算出来的不一致

    最近在项目中遇到了大文件分割上传问题,为了保证上传的文件的有效性需要确保分割的文件上传首先要成功,因此用到了md5加密,在js代码中上传文件之前将要上传的文件内容进行md5加密,然后作为其中一个参数传 ...

  4. SpringBoot+2次MD5登录密码加密+MyBatisPlus+Thymeleaf+Bootstrap简单实现登录功能,一文轻松搞定!

    这里写目录标题 一.演示GIF 二.开发前期准备 1.数据库 2.依赖POM.XML 3.idea结构目录 三.后端 1.实体类 2.mapper接口 3.mapper.xml 4.Servicce接 ...

  5. JavaScript使用md5验证登录加密

    直接上代码 1.HTML部分 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  6. ASP.Net中MD5和SHA1加密的几种方法

    首先简单介绍一下MD5和SHA1: MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Scie ...

  7. Node.js和NoSQL开发比特币加密货币应用程序(下)

    在使用Node.js和NoSQL开发比特币加密货币应用程序(上)中,我们创建了HD钱包,它可以为给定的种子生成无限量的密钥,每个密钥代表一个用户钱包.我们将根据主种子创建每个包含钱包的用户帐户.下面我 ...

  8. MD5和SHA加密实现

    @Testpublic void TestMD5AndSHA() throws NoSuchAlgorithmException {String MD5=Md5("123456") ...

  9. C# MD5 32位加密 UTF-8编码

    项目开发过程中需要用到MD5加密,最开始的使用使用加密方法: public static string GetMD5(string str)         {             byte[] ...

  10. 原创:MD5 32位加密软件

    网站后台数据库切勿使用明文保存密码,否则一旦黑客拿下你的Webshell,后果不堪设想. 网站后台密码加密大多数采用的就是MD5算法加密. 今天给大家送一个本人用c#简单编写的MD5 32位加密程序, ...

最新文章

  1. linux 约等于符号,Mac OS X基础教程:特殊符号的快捷输入方式
  2. 进制在c语言中的作用,C语言中的进制是什么意思?
  3. 2021夏季每日一题 【week2 未完结】
  4. centos7.0安装php,centos7.3安装php7.0
  5. Dominant Character 思维,字符串,贪心
  6. swift3.0截取View生成图片 图片截取成新图片
  7. 【SQL Join】两个字段关联到同一个表,如何使用left join
  8. dedecms 添加,编辑文章时 文章标题有字数限制的解决办法。
  9. poj 3414 Pots(广搜BFS+路径输出)
  10. html文本框 控件,标签和文本框都用于显示文本
  11. oracle 分组 top10 sql,oracle sql 合龙 分组 聚合函数
  12. cmake linux 交叉编译,[CMake]CMake设置arm-linux-gcc交叉编译器
  13. chkconfig、mount、shutdown
  14. Java Scanner类nextLine和nextInt不能同用问题
  15. 域控服务器降级失败,降级域控制器时出错 - Windows Server | Microsoft Docs
  16. httpSession和Cookie
  17. Java游戏程序设计教程 第2章 游戏设计的基本流程
  18. 跑赢业务的同时如何实现技术成长? | 凌云时刻
  19. ubuntu为jar创建快捷方式
  20. 11083 旅游背包(优先做)

热门文章

  1. 5.3 Zend_Log_Filter
  2. C# EF 与 MySql 的那些坑
  3. 利用cloudera manager搭建Hadoop集群
  4. 实验四+074+林盼皇
  5. 20145325张梓靖 《信息安全系统设计基础》第10周学习总结
  6. 实现异步加载js文件及加载完成后回调
  7. webapp之路--之query media
  8. 在J2ME和WAP中实现电话呼叫功能
  9. node 版本管理器 之 nvm 安装与使用
  10. Ibatis结合MySQL数据库的使用方法