我正在制作一个接受信用卡号的非常小的表格,此后不久将被清除。当它们存在于数据库中时,我希望它们以舒适的加密状态存在。不幸的是,在我多年的网络开发、编程和数据库开发中,我从未有机会在加密领域自学。
有没有比较容易实现的加密信用卡号的方法可以快速实现?一组函数、类,或者任何可以完成工作并且做得很好的东西?我借此机会就这个问题进行 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/