MD5加密(MD5Util )

MD5概述:
MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。MD5主要特点:
不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。也就是一共有2^128种可能,大概是3.4*10^38,这个数字是有限多个的,而但是世界上可以被用来加密的原文则会有无数的可能性)MD5的性质:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的(相当于超损压缩)。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。虽说MD5有不可逆的特点但是由于某些MD5破解网站,专门用来查询MD5码,其通过把常用的密码先MD5处理,并将数据存储起来,然后跟需要查询的MD5结果匹配,这时就有可能通过匹配的MD5得到明文,所以有些简单的MD5码是反查到加密前原文的。为了让MD5码更加安全,涌现了很多其他方法,如加盐。 盐要足够长足够乱 得到的MD5码就很难查到。MD5用途:
1.防止被篡改:1)比如发送一个电子文档,发送前,我先得到MD5的输出结果a。然后在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。2)比如我提供文件下载,为了防止不法分子在安装程序中添加木马,我可以在网站上公布由安装文件得到的MD5输出结果。3)SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5.2.防止直接看到明文:现在很多网站在数据库存储用户的密码的时候都是存储用户密码的MD5值。这样就算不法分子得到数据库的用户密码的MD5值,也无法知道用户的密码。(比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。)3.防止抵赖(数字签名):这需要一个第三方认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产生摘要信息并做好记录。若以后A说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,相同的话,就证明是A写的了。这就是所谓的“数字签名”。
package com.example.documentsubmissionsystem.util.MD5Util;import org.springframework.stereotype.Component;
import sun.misc.BASE64Encoder;import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** @author CaoPengCheng* @version 1.0* @description: MD5加密* @date 2021/9/17 15:08*/
@Component
public class MD5Util {/*** @return String* @author CaoPengCheng* @description: 计算md5的工具方法* @date 2021/9/17 15:08* @Param String password*/public static String createMD5(String password) {try {//确定md5加密算法MessageDigest md = MessageDigest.getInstance("md5");//通过md5计算摘要byte[] bytes = md.digest(password.getBytes(StandardCharsets.UTF_8));//md5值转成可读字符串BASE64Encoder base64 = new BASE64Encoder();return base64.encode(bytes);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}
}

MD5加密(MD5Util )相关推荐

  1. 利用Java自带的MD5加密java.security.MessageDigest;

    MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著 ...

  2. SpringBoot+Spring Security验证密码MD5加密

    本文目的:使用springBoot+springSecurity 用户授权验证权限功能,对用户的登录密码使用MD5 加密. 本文基于我的博客:springboot+mybatis+SpringSecu ...

  3. IOS(objective-c)实现md5加密(32位小写)的工具类

    我们编程中,md5加密是个经常会用到的功能.下面是我封装好的一个实现字符串md5加密的工具类. MD5Util.h #import <Foundation/Foundation.h>@in ...

  4. Java实现MD5加密和文件校验

    MD5简介: MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5) MD5的加密方式是一种哈希加密.一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系 ...

  5. Base64加密和Md5加密用户名

    1. String json = new Gson().toJson(new PhoneBean("110")); 2.先base64加密: String string = Bas ...

  6. springboot md5加密_实在!基于Springboot和WebScoket,写了一个在线聊天小程序

    基于Springboot和WebScoket写的一个在线聊天小程序 (好几天没有写东西了,也没有去练手了,就看了看这个...) 项目说明 此项目为一个聊天的小demo,采用springboot+web ...

  7. java中md5加密和解密_如何在java中实现md5加密和解密

    如何在java中实现md5加密和解密 关注:273  答案:1  mip版 解决时间 2021-01-19 20:37 提问者精神疯裂 2021-01-19 05:36 如何在java中实现md5加密 ...

  8. 手机号 MD5加密解密工具类

    package com.yestar.common.utils;import java.io.UnsupportedEncodingException; import java.security.Me ...

  9. md5加密校验 java_Java实现MD5加密和文件校验

    MD5简介: MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5) MD5的加密方式是一种哈希加密.一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系 ...

最新文章

  1. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络
  2. 论文简述 | TextSLAM:具有平面文本特征的视觉SLAM
  3. 增强MyEclipse的代码自动提示功能(测试结果不是很爽)
  4. Python学习笔记:Web后端开发一览
  5. 防止论坛批量小广告指南
  6. 【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )
  7. 从无头单链表中删除节点 结构之法 4
  8. spring boot 之session的总结
  9. [JSOI 2011]分特产
  10. (77)译码器与编码器(八三编码器)
  11. iOS CAReplicatorLayer 简单动画
  12. scrapy 入门案例
  13. 错误:cc1: error: unrecognized command line option “-m32”
  14. 用JAVA FX制作3D魔方游戏
  15. Python判断文件和文件夹是否存在的方法
  16. bzoj 3028 食物——生成函数
  17. rsync+inotify实现数据实时同步备份
  18. lcd1602c语言编程原理,lcd1602工作原理是什么?
  19. TMS320F28379D创建工程
  20. 【渝粤题库】广东开放大学 标准化法律法规 形成性考核

热门文章

  1. 2022年总结关于网络安全工程师职业发展方向和职业前景
  2. Android:利用sdk中的build-tools对包进行签名
  3. A constrained Eigenvalue Problem翻译
  4. TypeError: argument of type ‘NoneType‘ is not iterable
  5. Gensim学习笔记-1--理解corpora.Dictionary
  6. Zookeeper(2) - 配置详解与启动原理
  7. Git ---- 自建代码托管平台-GitLab
  8. unity 3d 原创制作射击游戏(一)
  9. 使用U盘安装Linux系统经验总结
  10. Swift之函数的语法和使用 | CSDN创作打卡