zoukankan      html  css  js  c++  java
  • 生成MD5只有31位如何解决?

    生成MD5有时只有31位如何解决?

    public static String toMd5(File file) {
            String value = null;
            byte[] encrypt;
            FileInputStream in = null;
            try {
                in = new FileInputStream(file);
                MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.update(byteBuffer);
                encrypt = md5.digest();
                StringBuilder sb = new StringBuilder();
                for (byte t : encrypt) {
                    sb.append(Integer.toHexString(t & 0xFF));
                }
                value = sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return value;
        }

    在上面代码中

    Integer.toHexString(t & 0xFF)会将首位为0的两位数转成字符串时,只保留一位,这就造成生成MD5有时会变成31位

    解决办法:

    public static String toMd5(File file) {
            String value = null;
            byte[] encrypt;
            FileInputStream in = null;
            try {
                in = new FileInputStream(file);
                MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.update(byteBuffer);
                encrypt = md5.digest();
                StringBuilder sb = new StringBuilder();
                for (byte t : encrypt) {
                    String s = Integer.toHexString(t & 0xFF);
                    if (s.length() == 1) {
                        s = "0" + s; // 注意此行,如果只有一位,在首位加0
                    }
                    sb.append(s);
                }
                value = sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return value;
        }
     
    随笔看心情
  • 相关阅读:
    Selenium with Python 003
    测试计划编写要点
    【springboot】给你一份Spring Boot知识清单
    【小技巧】排名前 16 的 Java 工具类!
    【linux】tail 命令详解
    【linux】less 命令详解
    【小技巧】java的List分页
    【springboot】自动装配原理
    【springcloud】springcloud Greenwich SR4版本笔记
    【转】springcloud底层原理
  • 原文地址:https://www.cnblogs.com/stromgao/p/12784803.html
Copyright © 2011-2022 走看看