`
风沙星辰
  • 浏览: 56191 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JAVA的MD5加密

    博客分类:
  • java
阅读更多


MD5的全称是Message-Digest Algorithm 5,Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。MD5将任意长度的" 字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
import java.security.MessageDigest; 
public class Test_MD5{ 
public final static String MD5(String s) { 
  char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
  'a', 'b', 'c', 'd', 'e', 'f' }; 
  try { 
   byte[] strTemp = s.getBytes(); 
   //使用MD5创建MessageDigest对象 
   MessageDigest mdTemp = MessageDigest.getInstance("MD5"); 
   mdTemp.update(strTemp); 
   byte[] md = mdTemp.digest(); 
   int j = md.length; 
   char str[] = new char[j * 2]; 
   int k = 0; 
   for (int i = 0; i < j; i++) { 
    byte b = md[i]; 
    //System.out.println((int)b); 
    //将没个数(int)b进行双字节加密 
    str[k++] = hexDigits[b >> 4 & 0xf]; 
    str[k++] = hexDigits[b & 0xf]; 
   } 
   return new String(str); 
  } catch (Exception e) {return null;} 
  } 
  //测试 
public static void main(String[] args) { 
  System.out.println("caidao的MD5加密后:\n"+Test_MD5.MD5("caidao")); 
  System.out.println("http://www.baidu.com/的MD5加密后:\n"+Test_MD5.MD5("http://www.baidu.com/")); 
} 
}


MD5的典型应用是对一段Message(字节串) 产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字****应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。
MD5 理论上是一种单向的哈希散列,一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。
即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是 P(62,1)+P(62,2)....+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

分享到:
评论

相关推荐

    java Md5加密方法 java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...

    java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...

    java md5 加密后转为16进制

    java md5 加密后转为16进制

    java md5加密 解密

    2. **Java中的MD5加密**:在Java中,可以使用`java.security.MessageDigest`类来实现MD5加密。首先,需要创建一个MD5实例,然后更新要加密的字节数组,最后获取并转换成十六进制字符串。 ```java import java....

    Java Md5加密工具类

    Java Md5加密工具类

    java md5加密

    java中的md5加密函数,已经封装成类和函数了,非常好用。

    java md5 加密

    Java MD5 加密是一种常见的数据哈希处理技术,用于生成固定长度的数字指纹,以确保信息的完整性和安全性。MD5(Message-Digest Algorithm 5)由Ronald Rivest在1991年设计,虽然它现在被认为在某些场景下不够安全,...

    java MD5加密 实例 例子

    下面是一个简单的Java MD5加密的代码示例,对应于你提供的`TestMD5.java`文件: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class TestMD5 { public ...

    java MD5加密工具类

    下面我们将详细讨论Java中MD5加密的原理、使用场景以及如何实现。 MD5加密的基本原理: MD5算法是一种非对称的加密算法,它将输入的信息通过一系列复杂的数学运算,最终得到一个128位的摘要信息,通常以32位的16...

    Java MD5 加密

    在Java中,实现MD5加密通常需要用到`java.security.MessageDigest`类。下面我们将详细探讨如何在Java环境中使用MD5进行密码加密: 1. 导入必要的库: 首先,我们需要导入`java.security.MessageDigest`和`java....

    JAVA MD5加密

    **JAVA MD5加密** MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的输入转化为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在JAVA中,MD5主要用于数据的...

    Java MD5 加密数据库连接池密码

    在Java中,可以使用java.security.MessageDigest类来实现MD5加密。以下是一个简单的MD5加密步骤: 1. 引入`java.security`包和`javax.crypto`包。 2. 创建`MessageDigest`实例,指定算法为MD5。 3. 更新要加密的...

    js java md5加密 中文 验签

    js java MD5加密 解决中文不一致问题 验签 只有英文 数字的可以忽略了

    java MD5加密

    java MD5加密 代码实例 没有bug 典型例子

    java MD5加密的jar包

    能直接在java的应用程序中使用的MD5加密实现的jar包, 调用方法:转化成MD5:MD5.getEncryptedPwd(user.getPassword()) MD5验证:MD5.validPassword(password, user.getPassword())

    Java MD5加密工具类(支持多参数输入)

    Java工具类,它不仅实现了MD5加密,更创新性地接纳String... inputStrs,让你能一次性加密多个字符串。 1. 一键加密,多值无忧 告别繁杂,拥抱简洁。我们的Java MD5加密工具类以String... inputStrs为武器,打破了...

    java MD5加密工具包

    用java封装的MD5加密工具包,创建对象,传递要加密的字符串,即可返回32位大写的MD5加密后的字符串

    java MD5 加密 完整源代码

    java MD5 加密 完整源代码 经本人测试 运行完全没问题

Global site tag (gtag.js) - Google Analytics