Blowfish Encrypt和Decrypt需要返回错误

时间:2016-06-08 02:24:59

标签: perl encryption blowfish

我使用Blowfish使用下面的代码加密和解密。如果解密有问题,如果说加密线没有正确的Salt,我需要返回错误。事实上,脚本就死了。感谢

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 个答案:

答案 0 :(得分:1)

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

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

如果您需要知道解密是否成功,意味着与加密的相同,请使用经过身份验证的加密。有关经过身份验证的加密的详细信息,请参阅此SO Answer

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

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