Для расшифровки файла архива в качестве вектора инициализации следует использовать хеш-функцию. Хеш-функция должна возвращать 8 байт (тип long long).
Пример реализации хеш-функции на языке программирования С:
typedef union {
struct {
unsigned long lo;
unsigned long hi;
};
long long hilo;
}LONG_LONG;
long long Hash8(const char *str) { // На основе Rot13
LONG_LONG temp;
temp.lo = 0;
temp.hi = 0;
for ( ; *str; )
{
temp.lo += (unsigned char) (*str);
temp.lo –= (temp.lo << 13) | (temp.lo >> 19);
str++;
if (!str) break;
temp.hi += (unsigned char) (*str);
temp.hi –= (temp.hi << 13) | (temp.hi >> 19);
str++;
}
return temp.hilo;
}