Как обрезать лишние байты после расшифровки 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