MD5-信息摘要算法简单介绍文章来源:https://www.toymoban.com/news/detail-614959.html
- MD5 (Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
- 计算出来的MD5值是有可能重复的,但是概率很低。
- 加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞破解,否则几乎无法解开
- MD5加密后的字符串是固定的,相同的字符串或文件每次加密得到的结果不变
Android 下的代码实现文章来源地址https://www.toymoban.com/news/detail-614959.html
- 下面的代码实现了通用的32位md5计算,计算结果保持生成的字符都是16进制的长度为32的字符串,在开发中需要的时候可以直接翻出来使用
public class Md5Util { public static String get(String text) { String result = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(text.getBytes()); result = toHexString(digest); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } return result; } public static String get(InputStream inputStream) { String result = null; try { byte[] buffer = new byte[8192]; int len; MessageDigest md = MessageDigest.getInstance("MD5"); while ((len = inputStream.read(buffer)) != -1) {//分多次读入文件,占用内存比较少 md.update(buffer, 0, len); } inputStream.close(); byte[] digest = md.digest(); result = toHexString(digest); } catch (Exception ex) { ex.printStackTrace(); if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } public static String get(File file) { String result = null; try { result = get(new FileInputStream(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } return result; } private static String toHexString(byte[] digest) { StringBuilder sb = new StringBuilder(); String hexStr; for (byte b : digest) { hexStr = Integer.toHexString(b & 0xFF);//& 0xFF处理负数 if (hexStr.length() == 1) {//长度等于1,前面进行补0,保证最后的字符串长度为32 hexStr = "0" + hexStr; } sb.append(hexStr); } return sb.toString(); } }
到了这里,关于Android下实现字符串或文件的MD5加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!