Blowfish 加密和解密需要 return 一个错误

Blowfish Encrypt and Decrypt need to return an error

我正在使用 Blowfish 通过以下代码进行加密和解密。如果说加密行没有正确的 Salt,我需要 return 一个错误,如果解密有问题。实际上,脚本就死了。谢谢

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]) : ''  }

不要使用 Blowfish:是的,它是一个简洁的名称,但它已经过时并被 AES 取代。如果您想要实现安全性,请使用 AES。

SO 上有很多提供示例代码的答案。

如果您需要知道解密是否成功,即与加密的内容相同,请使用经过身份验证的加密。有关经过身份验证的加密的更多详细信息,请参阅此

根据定义,加密只是一个数学函数,它总是成功的。就像 x = y * z,x 总是等于某个值,如果为 y 和 z 提供了不正确的值,它可能不是您想要的。加密也是类似的,需要提供正确的加密数据和密钥才能得到想要的解密数据。如果您提供不正确的加密数据 and/or 一个不正确的密钥,您将得到一个结果,但它不会是所需的解密数据。

如果存在填充,则可能会在无效密钥上注意到填充错误,但必须忽略此 且不得报告,否则可能会发生填充 oracle 攻击。