2016-06-08 9 views
1

Я использую Blowfish для шифрования и расшифровки с помощью кода ниже. Мне нужно вернуть ошибку, если есть проблема с расшифровкой, если говорят, что зашифрованная строка не имеет правильной соли. Как бы то ни было, сценарий просто умирает. БлагодаряBlowfish Шифрование и дешифрование должны возвращать ошибку

sub decrypt { $cipher = new Crypt::CBC($key, 'Blowfish'); 
defined $_[0] ? $cipher->decrypt_hex($_[0]) : '' 
#I NEED SOMETHING LIKE 
#if ($cipher){ $return = $cypher; } 
#else{ $return = "BadNumber"; } 
return $return; 
} 

sub encrypt { $cipher = new Crypt::CBC($key, 'Blowfish'); 
defined $_[0] ? $cipher->encrypt_hex($_[0]) : '' } 

ответ

1

Не использовать Blowfish: да это изящное имя, но он устарел и заменен AES. Используйте AES, если безопасность - это то, чего вы хотите достичь.

На SO есть много ответов, которые предоставляют пример кода.

Если вам нужно знать, было ли дешифрование успешным, что означает то же, что и зашифрованное, используйте аутентифицированное шифрование. См. Это SO Answer для получения дополнительной информации об аутентифицированном шифровании.

По определению шифрование - это просто математическая функция, она всегда успешна. Это похоже на x = y * z, x всегда будет что-то равным, возможно, это не так, как вы хотите, если для y & z заданы неверные значения. Шифрование аналогично, вам нужно предоставить правильные зашифрованные данные и ключ, чтобы получить требуемые дешифрованные данные. Если вы предоставите неверные зашифрованные данные и/или неправильный ключ, вы получите результат, но это не будут желаемые дешифрованные данные.

Если есть пробел, ошибка заполнения может быть замечена недействительным ключом, но этот должен быть проигнорирован и не сообщается или возможна атака оскорбления дополнений.

 Смежные вопросы

  • Нет связанных вопросов^_^