0

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

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

对于密钥,也许使用每个用户独有的哈希值?

这听起来像一个足够的想法吗?

4

2 回答 2

3

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

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

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

于 2012-09-04T09:53:00.260 回答
1

AES 是最好的加密方式。:)

我已经使用 AES 加密类一年多了,这是在 php.ini 中使用 FIPS Compliant 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)。– 分组密码模式 »

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

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

于 2012-09-04T09:43:41.723 回答