MessageDigest获取字符串或文件MD5详解
2016-11-27 20:53
375 查看
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MD5即Message-Digest
Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
可以用于
加密密码。
数据校验。例:下载文件时保证文件的完整性。
MD5即Message-Digest
Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
可以用于
加密密码。
数据校验。例:下载文件时保证文件的完整性。
public static String InputStreamMd5(InputStream is){ String md5 =""; try { MessageDigest ms = MessageDigest.getInstance("MD5"); byte[] bytes = new byte[1024*3]; int read = 0; try { while((read = is.read(bytes)) !=-1){ ms.update(bytes, 0, read); } //拿到结果 byte[] result = ms.digest(); StringBuilder sb = new StringBuilder();//默认为16 // StringBuilder sb = new StringBuilder(32);//初始容量设置为32 //// 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去 for(byte b : result){ sb.append(hexDigits[b>>>4 & 0xf]); sb.append(hexDigits[b&0xf]); } md5 = sb.toString(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return md5; }
public static String StringMd5(String input){ byte[] result = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] inputByteArray = input.getBytes(); md.update(inputByteArray); result = md.digest(inputByteArray); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return byteArrayToHex(result); } /** * 字节数组转16进制字符串 * @param byteArray * @return */ public static String byteArrayToHex(byte[] byteArray){ char[] hexDigits = "0123456789abcdef".toCharArray(); char[] resultCharArray =new char[byteArray.length * 2]; int index = 0; for (byte b : byteArray) { resultCharArray[index++] = hexDigits[b>>> 4 & 0xf]; resultCharArray[index++] = hexDigits[b& 0xf]; } return new String(resultCharArray); }
相关文章推荐
- 加密:Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- Java利用MessageDigest获取字符串或文件MD5详解
- C#获取文件MD5字符串
- iOS字符串加密至MD5&及获取文件MD5
- MD5全称Message-Digest-Algorithm-5,MD5计算工具用来检验文件是否修改过
- MD5全称Message-Digest-Algorithm-5,MD5计算工具用来检验文件是否修改过
- MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能
- MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能
- MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能
- iOS使用MD5 - 字符串加密至MD5&获取文件MD5
- Java利用MessageDigest提供的MD5算法加密字符串或文件
- iOS使用MD5 - 字符串加密至MD5&获取文件MD5
- iOS上获取文件md5的方法
- iPhoneSDK开发136技系列:第25技获取字符串的MD5