• 生成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;
        }
     
    随笔看心情
  • 相关阅读:
    LeetCode_326. Power of Three
    LeetCode_303. Range Sum Query
    LeetCode_299. Bulls and Cows
    LeetCode_292. Nim Game
    LeetCode_290. Word Pattern
    LeetCode_283. Move Zeroes
    LeetCode_278. First Bad Version
    LeetCode_268. Missing Number
    LeetCode_263. Ugly Number
    LeetCode_258. Add Digits
  • 原文地址:https://www.cnblogs.com/stromgao/p/12784803.html
Copyright © 2020-2023  润新知