MD5加密

来源:互联网 发布:阿里大于发送短信php 编辑:程序博客网 时间:2024/05/13 12:49
开发中经常涉及MD5(中文信息摘要、非对称性)的加密,用于确保信息传递过程中的完整一致性。它将数字、字母、汉字甚至是文件等解析为一串固定的字符值。例如用户密码的加密、文件上传时判断文件是否重复等……

MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的
2、容易计算:原数据很容易生成MD5值
3、抗修改性:对原数据有任何的改动,生成的MD5值都不一样
4、强抗碰撞:不同原数据生成相同MD5值的概率极其小

实现上可以自定义生成MD5值方法,也可以使用封装好的生成MD5的方法库,例如Guava、commons.codec的DigestUtils、spring的工具类DigestUtils

一、Guava库生成md5
pom.xml中引入guava依赖
<!--guava依赖--><dependency>    <groupId>com.google.guava</groupId>    <artifactId>guava</artifactId>    <version>14.0.1</version></dependency>
测试代码:
public static void getMd5ByGuava() throws Exception {    File file = new File("D:/测试图片.png");    String context = IOUtils.toString(new FileInputStream(file));    String md5 = Hashing.md5().newHasher().putString(context, Charsets.UTF_8).hash().toString();    System.out.println( md5);}

二、commons-codec库生成md5
pom.xml中引入commons-codec依赖
<dependency>   <groupId>commons-codec</groupId>   <artifactId>commons-codec</artifactId>   <version>1.9</version></dependency>
测试代码:
public static void getMd5ByDigestUtil() throws Exception {    try {        File file = new File("D:/测试图片.png");        String context = IOUtils.toString(new FileInputStream(file));        String md5 = DigestUtils.md5Hex(context);        System.out.println(md5);    } catch (FileNotFoundException e) {        e.printStackTrace();    }}

三、spring的工具类DigestUtils
DigestUtils类封装在spring-core包下
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.1.0</version></dependency>
测试代码:
String md5 = DigestUtils.md5DigestAsHex("sdfsds".getBytes());


原创粉丝点击