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

摘要:
生成MD5有时只有31位如何解决?publicstaticStringtoMd5(Filefile){Stringvalue=null;byte[]encrypt;FileInputStreamin=null;try{in=newFileInputStream(file);MappedByteBufferbyteBuffer=in.getChannel().map(FileChannel.MapM

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

public staticString toMd5(File file) {
        String value = null;
        byte[] encrypt;
        FileInputStream in = null;
        try{
            in = newFileInputStream(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 = newStringBuilder();
            for (bytet : encrypt) {
                sb.append(Integer.toHexString(t & 0xFF));
            }
            value =sb.toString();
        } catch(Exception e) {
            e.printStackTrace();
        }
        returnvalue;
    }

在上面代码中

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

解决办法:

public staticString toMd5(File file) {
        String value = null;
        byte[] encrypt;
        FileInputStream in = null;
        try{
            in = newFileInputStream(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 = newStringBuilder();
            for (bytet : 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();
        }
        returnvalue;
    }

免责声明:文章转载自《生成MD5只有31位如何解决?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇普通交叉验证(OCV)和广义交叉验证(GCV)Android中使用JNI获得APK签名的哈希值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Java连接Mysql数据库异常:Public Key Retrieval is not allowed

1) 设置dataSource。setAllowPublicKeyRetrieval通过代码;数据源。setUseSSL;2) 将jdbc url设置为jdbc:mysql://localhost:3306/Database_dbName?...

CommonJS规范

NodeJS是本规范的实现。环境、运行、JSGILocaland远程包和包管理关于每个子规范的具体定制进度,请参考官方网站描述:Apache CouchDB和node.js。然而,这些项目中的大多数只实现了CommonJS的一些规范。具体项目及实施请参见官方网站描述:http:...

JRebel 6 破解版及使用方法

2.解压下载的jrebel6.0.0-crack.zip、jrebel6.0 jar包和破解文件。假设文件在D:/jrebel步骤:1中解压缩。eclipse下载jrebe插件,可以在市场上下载。2.打开eclipse的窗口首选项jrebel,打开优势选项卡,并将jar包的路径指向D:/jrebel/jrebel.jar。用CMD打开DOS窗口,输入cd/d...

Linux系统glibc库版本信息查看

有时我们经常需要检查当前系统的glibc版本。您可以按如下方式进行检查:/lib/libc。所以。6有时:/lib/x86-64-linux/libc。因此6.将文件作为命令执行。为什么库可以直接运行?Glibc是gnu发布的libc库,即c运行时。glibc是linux系统中最低级别的api,几乎任何其他运行时都将依赖glibc。Gcc和libc是相互依赖...

WritableWorkbook 详细用例 (转)

1WritableWorkbookworkbook=工作簿.createWorkbook(newFile(“d:\test.xls”));1Workbookwb=工作簿.getWorkbook(newFile(“src\test\test.xls”));...

Uni-app v-on监听事件

使用标记上的v-on监视事件。缩写为@click common click events方法:方法:{Focus(){console.log;},blur(){console.log;},confirm(){console.log;},click(){console.log;},tap(){console.log;},longpress(){console....