Код: Выделить всё
while (derivedKeyWords.length < keySize) {
if (block) {
hasher.update(block);
}
block = hasher.update(password).finalize(salt);
hasher.reset();
// Iterations
for (var i = 1; i < 10000; i++) {
block = hasher.finalize(block);
hasher.reset();
}
derivedKey.concat(block);
}
< /code>
достаточно просто, но когда я пытаюсь воссоздать это в C (используя функцию MD5 OpenSSL), он дает другой результат полученного ключа. < /p>
while (sizeof(derivedkey) < keysize) {
MD5_Init(&ctx5);
if (sizeof(dgest) > 0) {
MD5_Update(&ctx5, dgest, sizeof(dgest));
}
MD5_Update(&ctx5, password, sizeof(password));
MD5_Update(&ctx5, salt, sizeof(salt));
MD5_Final(dgest, &ctx5);
for (int j = 1; j < 10000; j++) {
MD5_Init(&ctx5);
MD5_Update(&ctx5, dgest, sizeof(dgest));
MD5_Final(dgest, &ctx5);
}
strcat(derivedkey, dgest);
//I've also tried memcpy(derivedkey, dgest, sizeof(dgest));
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ation-in-c