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;
        }
     
    随笔看心情
  • 相关阅读:
    牛客网提高五练习
    [BZOJ2820]YY的GCD
    [BZOJ2301][HAOI2011]Problem B
    [板子]快速读入
    复选框改成开关样式,滑动切换(纯css实现)
    rem的使用方法
    html添加删除输入框
    jq 实现全选反选,获取选中的值
    cdn引入vant框架使用在html页面使用
    为什么vuejs里面定义的template模板里定义的多个元素只显示一个
  • 原文地址:https://www.cnblogs.com/stromgao/p/12784803.html
Copyright © 2011-2022 走看看