IT高手救命啊!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT高手救命啊!相关的知识,希望对你有一定的参考价值。
为什么,java获取test.txt的MD5值与linux命令获取test.txt的值不同?
java获取文件MD5值的代码:
/**
* 获取单个文件的MD5值!
* @param file
* @return
*/
public static String getFileMD5(File file)
if (!file.isFile())
return null;
MessageDigest digest = null;
FileInputStream in=null;
byte buffer[] = new byte[1024];
int len;
try
digest = MessageDigest.getInstance("MD5");
in = new FileInputStream(file);
while ((len = in.read(buffer, 0, 1024)) != -1)
digest.update(buffer, 0, len);
in.close();
catch (Exception e)
e.printStackTrace();
return null;
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
;
linux 命令获取文件: md5sum test.txt
我想知道怎样才能使二者的MD5值一样呢(test.txt使用一份文件的拷贝,不存在修改问题)?
你的 传递的 “Exercise” 参数 没有获取到,所以为空,再将这个值进行trim()操作的时候,就抛异常了。
request.getParameter("Exercise").trim() 这里报异常
检查一下 "Exercise" 参数 是否正确,并且确定其有值 参考技术A 你是按十六进制输出的,
LINUX命令不一定是这样。
百度百科里摘了下面一段,你换成二进制试一下,我手头没有linux没法试。
------------------------------------------------------------------------------------------------------------------------
linux 下 shell命令 ,制作md5码 也用于软件的md5校验 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。
------------------------------------------------------------------------------------------------------------------------ 参考技术B 输入流别用FileInputStream 在这个读取过程中相当于进行一次转化
最好用ByteArrayInputStream 来进行md5,ByteArray读取与平台无关
救命啊救命啊, 两种装载动态链接库的区别?
有一动态链接库libxxx.so, 里面提供了一个sayhello()函数,请问下面两种方式有什么区别?方式一:main.cint main() sayhello(); return 0;gcc -lxxx main.c; --编译连接时使用 -l进行连接这种方式实在不理解, 但也是用得最多的,比如我们的-lpthread -lm等等等。。。若libxxx.so代码变更重新编译, 我们也重新编译main.c会发现其md5值和之前的不一样。方式二:int main() handle = dlopen("libxxx.so", RTLD_NOW); p_sayhello = dlsym(handle, "sayhello"); (*p_sayhello)();gcc -ldl(这个是dlopen的库) main.c --编译连接时不使用 -l进行连接,而是在程序执行时动态打开。这种方式有点在于动态库变化时,不必编译main.c缺点是:1.如果动态库中有很多函数,那么每个函数都要进行dlsym,取出其地址十分麻烦 2.请补充
我知道区别了-l 相当于静态库,仅在链接的时候装载,不过不是合并入主程序本身(区别于静态库),而是直接将动态库的内容装入内存。 如果动态库在程序执行过程中改变了,程序依然使用的内存中的库。也就是所动态库的后继变更仅仅体现在so这里面,但是主程序在执行的时候依然使用内存中的动态库。dlopen 则是每次都直接从文件系统重新装载动态库。 参考技术A 回复 2# lrita 这个区别我也知道,请问除此之外还有什么?以上是关于IT高手救命啊!的主要内容,如果未能解决你的问题,请参考以下文章