Android NDK获取二进制文件的md5 描述
我正在尝试获取二进制(Android NDK获取二进制文件的md5 描述,android,c++,android-ndk,md5,Android,C++,Android Ndk,Md5,我正在尝试获取二进制(.dex)文件的md5哈希,该文件存储在/data/data/my.package.name/file.dex中。我使用androidndk(C++) 问题 获取文件哈希的几种方法: 从我的笔记本电脑:md5sum file.dex->5a65273b2ee336ad2c45a9306be162f6 使用adb外壳:md5sum file.dex->5a65273b2ee336ad2c45a9306be162f6 从我的C++代码中得出: int err=0; zip*z=
.dex
)文件的md5哈希,该文件存储在/data/data/my.package.name/file.dex
中。我使用androidndk(C++)
问题
获取文件哈希的几种方法:
md5sum file.dex
->5a65273b2ee336ad2c45a9306be162f6
md5sum file.dex
->5a65273b2ee336ad2c45a9306be162f6
int err=0;
zip*z=zip_open(getbaseapkabSolutionPath(),0,&err);
const char*name=“classes.dex”;
结构zip_stat st;
zip_stat_init(&st);
zip_stat(z、name、0和st);
字符*内容=新字符[st.size];
zip_file*f=zip_fopen(z,name,0);
zip_fread(f、目录、标准尺寸);
std::流的流;
ofstream.open(“/data/data/my.package/classes.dex”,std::ofstream::binary);
流写入(内容、标准大小);
joyee::MD5 MD5=joyee::MD5();
md5.更新(目录,大小(目录));
md5.finalize();
LOG(md5.toString());
日志(joyee::md5(目录));
zip_fclose(f);
zip_close(z);
然后我得到这个->aaaeb407992f9fe57cc6235ece90ec35
澄清
Hello,World代码>
md5.update(contents, sizeof(contents));
您使用的是指针的大小(4或8),而不是指针指向的缓冲区。因此,您实际上是在计算前几个字节的md5sum。传递
st.size
以检查完整文件。在contents
中额外的字节是什么?显然,您的MD5
函数需要一个长度参数,因此不需要NUL终止符。@Michael,我只是忘了删除它。这没用