我正在为电子商务网站制作结帐页面。在该网站上,人们输入他们的信用卡信息,然后以 AES 加密格式将其保存到订单中。当他们只支持 VISA 时,这很好用。现在他们支持 MasterCard 和 Discover(16 位数字),它不再有效。插入查询如下所示:
"insert into order_master set ccnum = AES_ENCRYPT(:ccnum, 'password') ...";
我也试过另一种格式:
"insert into order_master (ccnum, ...) values (AES_ENCRYPT(:ccnum, 'password')..)";
两者都无济于事。有人可以尝试指出我做错了什么的正确方向吗?我什至吐出了条目查询以确保正确插入了值等等,什么也没有。这非常令人沮丧,我希望有人可以帮助我。谢谢!
最佳答案
事实证明,客户端将列的数据类型设置为 varchar (20) - 这未能捕获所有二进制数据(加密前只有 16 个字符的卡号)。我让他将长度更改为 255,现在效果很好。感谢您的所有帮助/建议!
关于php - AES、MySql 和头痛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1878134/