php - 使用 PHP 进行加密的新手,请指导?

标签 php security encryption

我正在制作一个接受信用卡号的非常小的表格,此后不久将被清除。当它们存在于数据库中时,我希望它们以舒适的加密状态存在。不幸的是,在我多年的网络开发、编程和数据库开发中,我从未有机会在加密领域自学。

有没有比较容易实现的加密信用卡号的方法可以快速实现?一组函数、类,或者任何可以完成工作并且做得很好的东西?我借此机会就这个问题进行 self 教育,但由于时间紧迫,我需要的不仅仅是插入正确方向。

语言:PHP/存储:MySQL

最佳答案

最好的方法之一是简单地使用 MySQL 进行加密/解密。查看这些函数:

http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

但是,请记住,虽然这可以保护您免受可能找到读取您数据库的方法的人的侵害,但它无法防止拥有服务器的人。那是因为解密 key 存在于服务器上。

总而言之,这是一个巨大的提升。真正的安全来自公钥加密和使用安全私钥(例如不同的服务器)的离线解密。


举个例子:

INSERT INTO BillingInfo 
SET CCard = AES_ENCRYPT('4111...', 'super-secret-key')
...

SELECT 
AES_DECRYPT(CCard, 'super-secret-key') 
...

具体功能记录在这里:
http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_aes-encrypt

更多关于AES的信息,请看:
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard


为了在您的环境中获得最大的安全性,我建议您将 key 存储在一个 PHP 常量中。以这种方式在运行时泄露的可能性较小(次要细节)。

关于php - 使用 PHP 进行加密的新手,请指导?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011073/

相关文章:

php - 如何检查php中的空url参数

php - 使用内联编码在输入按键时内联 javascript 警报

security - 在kubernetes etcd存储中加密 secret 数据

encryption - 使用哈希 MD5 加密 DES

c# - C++ 和 C# 与 Crypto 之间加密的互操作性

php - 将mysql中的查询转换为两个数据库中的Codeigniter

php - SQL:删除重复的行? (PHP)

php - 如何在PHP中生成大量 session ID?

php - 如何防止 PHP 中的 SQL 注入(inject)?

security - SSL 速度 : 128 vs 256 bit