MD5加密原理
来源:互联网 发布:nginx 安装后无法访问 编辑:程序博客网 时间:2024/06/07 21:12
MD5加密 :
安全散列算法(全称:Message - Digest Algorithm 5),现在应用最广泛的哈希算法之一,主要应用于对文件以及密码等加密处理,为了保证文件的正确性,防止一些人盗用程序。
一、思想:输入两个不同的明文不会得到相同的输出值,不能得到原始的明文,即其过程是不可逆的
(也就是说如果数据库被盗,不会通过数据库里加密计算出的32位十六进制数反推出原密码),广泛应用于
互联网网站的用户文件加密,能够将用户密码加密为128位的长整数。数据库并不明文存储用户密码,而是在
用户登录时将输入密码字符串进行 MD5加密,与数据库中所存储的MD5值匹配,从而降低数据库被盗后用户
损失的风险。
二、 MD5特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
三、工具类:
public class MD5Util {
//使用MD5的算法进行加密
public static String md5(String plainText) {
byte[] secretBytes = null;
try {
secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有MD5这个算法!");
}
// 16进制数字
String md5code = new BigInteger(1, secretBytes).toString(16);
// 如果生成数字未满32位,需要前面补0
while(md5code.length() < 32){
md5code = "0" + md5code;
}
return md5code;
}
//使用MD5的算法进行加密
public static boolean md5s(String plainText,String pwd) {
byte[] secretBytes = null;
try {
secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("没有MD5这个算法!");
}
// 16进制数字
String md5code = new BigInteger(1, secretBytes).toString(16);
// 如果生成数字未满32位,需要前面补0
while(md5code.length() < 32){
md5code = "0" + md5code;
}
if(md5code.equals(pwd)){
return true;
}else{
return false;
}
}
}
四、登录与注册的运用
1、导入项目所需jar包
spring-security-crypto-3.1.0.RELEASE.jar
2、在项目中的运用
@Repository
public class T_userDAO {
@Resource
private T_userMapper mapper;
//登录
public String login(T_user user){
T_user ow = mapper.login(user.getUsername());
//md5
boolean b = MD5Util.md5s(user.getPassword(),ow.getPassword());
System.out.println(b);
return "ow";
}
//注册
public void register(T_user user){
//MD5
user.setPassword(MD5Util.md5(user.getPassword()));
mapper.register(user);
}
}
- md5加密原理 MD5简介
- md5加密原理 MD5简介
- MD5加密原理
- MD5加密原理
- md5加密原理!!!【转】
- MD5 加密原理
- MD5加密原理
- Md5加密原理
- md5加密原理
- MD5加密及其原理
- MD5加密原理
- MD5 加密原理
- MD5加密原理
- MD5加密原理
- MD5加密原理
- md5加密原理
- Md5加密原理及其实现算法
- MD5加密原理和Java实现
- 自定义路径错误访问页面
- 动态规划知识详解(一)
- Java DecimalFormat的主要功能及使用方法
- javascript普通事件和绑定事件
- doTag标签中的属性值的设置
- MD5加密原理
- 微博
- javascript设计模式-module(模块)模式
- 华硕pro系列笔记本,右击文件出现闪退现象解决办法
- git stash使用
- CodeIgniter框架源码笔记(13)——SESSION之文件File驱动实现
- 汉字存储
- 使用cornerstone上传忽略.a文件的解决办法
- 基本排序算法的Python实现