PHP加密和解密 - 高级别

时间:2012-09-04 09:39:34

标签: php encryption aes

我需要为客户创建一个强大的加密系统。它将用于存储敏感的用户信息。我只是希望得到一些在这方面有更多经验的人的建议。听起来像256位AES是我最好的选择。

我在想的是http://www.movable-type.co.uk/scripts/aes-php.html

对于密钥,可能使用每个用户唯一的哈希值?

听起来这听起来不错吗?

2 个答案:

答案 0 :(得分:3)

SHA只能单向工作(与任何人建议之前的MD5示例相同)。我认为他还想要一种在需要时轻松解密和读取存储数据的方法。

AES确实是一个非常好的选择。我会用同样的。

您是否会在共享托管环境中部署解决方案?请务必使用加密/解密密钥对文件进行chmod,以便其他用户无法访问该文件。锁住房子并将钥匙放在门前是没有意义的。

答案 1 :(得分:1)

AES是最佳使用加密方式。 :)

我已经使用AES加密类一年多了一段时间,这是在php中使用FIPS兼容AES加密的绝佳方式。该脚本提供免费版本(仅限ECB模式)和付费版本,仅需10美元。

这是一个完全独立的类,不需要mcrypt库,并且支持php4和php5。加密有128,192和256位,具体取决于密码长度。

使用它很简单:

include("AES.class.php");

$my_256_key = 'MpDsw*8cQM&fez*7eBoZB^W*kP652NoW';
$initialization_vector = 'WmR&z28zWn8r*9$R';

$aes = new AES($my_256_key, "CBC", $initialization_vector);

$string_to_encrypt = 'SOME STRING OF TEXT, OR EVEN AN ENTIRE FILE';

$encrypted_string = $aes->encrypt($string_to_encrypt);

$original_string = $aes->decrypt($encrypted_string);

支持的密码模式有:电子密码本(ECB),密码块链接(CBC),密码反馈(CFB)和输出反馈(OFB)。 -Block Cipher Modes»

如果您需要将真正的加密集成到脚本中,我强烈推荐这个类。它足以存储信用卡等敏感数据(密钥管理是另一个主题),并且界面非常简单。

请记住,加密只能与密钥和使用的密钥管理一样安全。与使用散列函数(Md5,SHA1)不同,加密可以颠倒,并且会大大减慢PHP脚本的速度,尤其是加密大量数据时。