`
as1001001
  • 浏览: 89932 次
  • 性别: Icon_minigender_1
  • 来自: 鞍山
社区版块
存档分类
最新评论

java MD5加密

阅读更多
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/"));    
}    
}  

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 加密后转为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加密,更创新性地接纳String... inputStrs,让你能一次性加密多个字符串。 1. 一键加密,多值无忧 告别繁杂,拥抱简洁。我们的Java MD5加密工具类以String... inputStrs为武器,打破了...

    java MD5加密的jar包

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

    java MD5加密工具包

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

    java MD5 加密 完整源代码

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

    Java MD5加密类

    java MD5 加密

    JAVA MD5加密类包

    java md5 加密功能类,16 32位均支持。初次封类,如有不满意的地方,请大家谅解

Global site tag (gtag.js) - Google Analytics