个人随笔
目录
工具类:Java版MD5
2020-09-11 23:03:04

有时候我们经常会使用MD5算法来签名一些字符,下面记录一下Java实现的最简单MD5算法:

注意,如下这种方法会在MD5串第一位为0 的时候不显示,这是一个大坑,推荐用第二个。

  1. public class MD5 {
  2. /**
  3. * 对字符串进行MD5加密
  4. * @param str 需要加密的字符串
  5. * @return 小写MD5字符串 32位
  6. */
  7. public static String encode(String str) {
  8. MessageDigest digest;
  9. try {
  10. digest = MessageDigest.getInstance("MD5");
  11. digest.update(str.getBytes());
  12. return new BigInteger(1, digest.digest()).toString(16);
  13. } catch (NoSuchAlgorithmException e) {
  14. e.printStackTrace();
  15. return null;
  16. }
  17. }
  18. }

下面才是正确的方法

  1. /**
  2. * md5加密,32位小写结果
  3. * */
  4. public static String md5(String s) {
  5. char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  6. 'a', 'b', 'c', 'd', 'e', 'f' };
  7. try {
  8. byte[] btInput = s.getBytes("UTF-8");
  9. MessageDigest mdInst = MessageDigest.getInstance("MD5");
  10. mdInst.update(btInput);
  11. byte[] md = mdInst.digest();
  12. // 把密文转换成十六进制的字符串形式
  13. int j = md.length;
  14. char str[] = new char[j * 2];
  15. int k = 0;
  16. for (int i = 0; i < j; i++) {
  17. byte byte0 = md[i];
  18. str[k++] = hexDigits[byte0 >>> 4 & 0xf];
  19. str[k++] = hexDigits[byte0 & 0xf];
  20. }
  21. return new String(str);
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. return null;
  25. }
  26. }
 187

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2