MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
MD5 是非对称的加密算法(PS:对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样)。
maven 引入apache的jar(不是maven项目,去网上下一个jar手动引入)
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency>
代码:
import java.security.MessageDigest; public static String getmd5(String mesage){ String digest=null; MessageDigest md; try{ md=MessageDigest.getInstance("MD5"); byte[] hash=md.digest(mesage.getBytes("UTF-8")); StringBuilder sb=new StringBuilder(2*hash.length); for(byte b:hash){ sb.append(String.format("%02x",b&0xff)); } digest =sb.toString(); } catch(NoSuchAlgorithmException | UnsupportedEncodingException e){ e.printStackTrace(); } return digest; }