ОПИСАНИЕ
Я пытаюсь получить md5 хэш двоичного (.dex
) файла, который хранится в /data/data/my.package.name/file.dex
.Я использую Android NDK (C ++).
ПРОБЛЕМА
Несколько способов получить хеш файла:
- С моего ноутбука:
md5sum file.dex
-> 5a65273b2ee336ad2c45a9306be162f6
- Использование
adb shell
: md5sum file.dex
-> 5a65273b2ee336ad2c45a9306be162f6
- Из моего кода C ++:
int err = 0;
zip *z = zip_open(getBaseApkAbsolutePath(), 0, &err);
const char *name = "classes.dex";
struct zip_stat st;
zip_stat_init(&st);
zip_stat(z, name, 0, &st);
char *contents = new char[st.size];
zip_file *f = zip_fopen(z, name, 0);
zip_fread(f, contents, st.size);
std::ofstream ofstream;
ofstream.open("/data/data/my.package/classes.dex", std::ofstream::binary);
ofstream.write(contents, st.size);
joyee::MD5 md5 = joyee::MD5();
md5.update(contents, sizeof(contents));
md5.finalize();
LOG(md5.toString());
LOG(joyee::md5(contents));
zip_fclose(f);
zip_close(z);
И тогда я получаю это ->aaaeb407992f9fe57cc6235ece90ec35
РАЗЪЯСНЕНИЕ
- Мой код хорошо работает с простой строкой, такой как
Hello, World!
- Реализация MD5 работает хорошо
ВОПРОС
Как получить хэш md5 двоичного файла в Android с помощью C ++?