Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NDK获取二进制文件的md5 描述_Android_C++_Android Ndk_Md5 - Fatal编程技术网

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
  • 使用adb外壳:
    md5sum file.dex
    ->
    5a65273b2ee336ad2c45a9306be162f6
  • 从我的C++代码中得出:
    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实现运行良好
  • 问题 <如何在C++中用C++获得二进制文件的MD5哈希?< /p> < p>这里的问题是:

    md5.update(contents, sizeof(contents));
    

    您使用的是指针的大小(4或8),而不是指针指向的缓冲区。因此,您实际上是在计算前几个字节的md5sum。传递
    st.size
    以检查完整文件。

    contents
    中额外的字节是什么?显然,您的
    MD5
    函数需要一个长度参数,因此不需要NUL终止符。@Michael,我只是忘了删除它。这没用