MD5加密算法实现
原创
52cxy
04-04 09:08
阅读数:513
MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
MD5作为一种常用的摘要算法(或指纹算法),其具有以下几个重要的特点(个人观点):
1、输入任意长度信息,输出长度固定,MD5 可输入任意长度的信息,其输出均为128位(bit)固定长度的二进制数据。
2、运算速度快:MD5的运算均为32位 与、或、非、位移等位运算,因此其运算速率快,几乎不消耗CPU时间。
3、不可逆:根据MD5的的散列结果,无法计算出原始数据(查字典除外)。
4、碰撞性:原始数据与其MD5散列结果并非一一对应,存在多个原始数据的MD5结果相同的可能性。
5、不安全:2011年,RFC 6151 禁止MD5用作密钥散列消息认证码。
一、PHP
$enData = md5('ItUtil.net'); var_dump(enData);
二、JAVA
public class 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算法!"); } String md5code = new BigInteger(1, secretBytes).toString(16); for (int i = 0; i < 32 - md5code.length(); i++) { md5code = "0" + md5code; } return md5code; } public static void main(String[] args) throws Exception { final String data = "ItUtil.net"; String enData = md5(data); System.out.println("加密后的数据:" + enData); } }
共0条评论