【问题标题】:python: two way partial credit card storing encrytionpython:双向部分信用卡存储加密
【发布时间】:2011-01-18 07:24:53
【问题描述】:

对于我的电子商务网站,我想将部分信用卡号存储为字符串,为此我需要加密信息以存储在数据库中,并在用户想要重复使用之前购买的已输入信用卡信息而不输入时解密一切从头再来。

我正在使用 Django,因此我需要通过 Python 解决这个问题。解决这个问题的聪明算法是什么?

【问题讨论】:

    标签: python django encryption credit-card


    【解决方案1】:

    在您进一步了解之前,您应该查看PCI-DSS,它准确地控制了您需要具备哪些流程才能考虑存储加密的卡号。简而言之,您应该认真考虑外包给第三方支付网关。

    如果您了解了后果之后确实想继续,那么再次 - 遵循 PCI 指南。对于卡号的对称加密,您可能希望使用AES,并制定非常严格的key management policies

    但是,如果您只想存储部分卡号,那么 PCI 声明您可以(绝对最多)存储前六位和后四位数字。前六位数字是您识别卡类型所需的全部内容。您可能认为必要的最后四位数字有助于防止客户卡号几乎相同的问题。

    恕我直言,存储部分卡号(纯文本)是您想要做的,然后将加密、授权和结算的处理外包给3rd party gateway。支付网关将为您传递给他们的每张卡提供唯一的令牌 ID,以便您可以参考唯一的卡来执行重新授权或退款等。

    【讨论】:

      【解决方案2】:

      您确定要像这样散列敏感信息吗?可能值得阅读this article 以了解尝试将任何敏感信息存储在数据库中的一些陷阱。在您的情况下,情况更糟,因为您希望转换是可逆的。请记住,如果您可以逆转它,那么攻击者也可以。

      在开始本课程之前仔细考虑...

      也许您最好将此类工作外包给专门从事此工作的人(例如PaypalGoogle Checkout 等)。

      【讨论】:

        猜你喜欢
        • 2010-12-01
        • 2016-04-17
        • 2011-10-23
        • 2011-07-02
        • 2010-12-18
        相关资源
        最近更新 更多