yarkov
@yarkov
Помог ответ? Отметь решением.

Blowfish. Как избавиться от 000... в конце строки?

Пример: jsfiddle
Есть какой-то способ не нарушая исходной строки убрать 000... в конце расшифрованной строки?
  • Вопрос задан
  • 481 просмотр
Решения вопроса 1
alsopub
@alsopub
Шифр блочный, при кодировании строка дополняется нулями до кратности 8.
Вот кусок кода из скрипта:
for (var f = 0; f < t.length % 8; f ++) t+= "0";

Варианты:
1) Самостоятельно дополнять строку пробелами (или чем удобно) при шифровании
2) Запоминать длину строки вместе с зашифрованной строкой
3) Удалять символы "0" в конце расшифрованной строки (и надеяться что они не будут частью данных)
4) Применить пункт 1 (дополнять символами, которых точно не будет в данных) и затем пункт 3 (удалить эти символы)
5) Внести длину строки в шифруемую строку, чтобы получилось "8;MyString", при расшифровке получить число в начале строки, и обрезать результат.

Лично мне ближе пункт 5.
https://jsfiddle.net/ddhsujv7/2/
function myencrypt(key, str) {
  var bf = new Blowfish(key);
  return bf.encrypt(str.length+";"+str);
}

function mydecrypt(key, enc) {
  var bf = new Blowfish(key);
  var dec = bf.decrypt(enc);
  var len = parseInt(dec);
  return dec.substr(String(len).length + 1, len);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы