Как обрезать лишние байты после расшифровки DES?

Был зашифрован файл на языке java. Я же пытаюсь его расшифровать на языке D. Надо расшифровать файл. С самой дешифрацией проблем не возникло. Нашел алгоритм на просторах гитхаба. Получаю исходную строку. В этом проблем нет. Но... Дело в том, что строки у DES кратны 8-ми. И если не хватает длинны, то в конец пишутся случайные байты.

И у меня встала проблема. Я получаю строку, у которой на конце мусорные байты. Как мне их отследить, чтобы обрезать и получить строку без мусора?

Вот сам код расшифровки (если надо могу еще скинуть код, который я портировал по ссылке ниже)

// Читаем файл
ubyte[] bytes = file.rawRead(new ubyte[needed]);

// Исходная строка
ubyte[] o;

// Дешифруем
ubyte[8] PT;
ubyte[8] CT;
for (size_t readed = 0; readed < needed; readed += 8) {
    CT = bytes[readed..readed+8];
    decrypt_block( &PT[0], &CT[0], &myskey[0] );

    o ~= PT;
}

return to!string(cast(char[])o);

Код подсмотрел от сюда: https://github.com/delhatch/DES_decrypt/blob/master/des_decrypt.cpp


Ответы (0 шт):