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;
        }
     
    随笔看心情
  • 相关阅读:
    IOS-自定义返回按钮,保留系统滑动返回
    IOS-static cell 与 dynamic cell 混合使用
    IOS-快速集成检查更新
    IOS-如何优雅地拦截按钮事件(判断是否需要登录)
    IOS-更优雅地使用Static Cell
    Xcode8出现问题总结
    IOS-工程师Mac上的必备软件
    Minimum Sum of Array(map迭代器)
    C++ STL map
    Friends and Cookies(思维)
  • 原文地址:https://www.cnblogs.com/stromgao/p/12784803.html
Copyright © 2011-2022 走看看