.net - 是否有用于信用卡加密的最佳 .NET 算法?

标签 .net security encryption cryptography

.NET System.Security.Cryptography命名空间有一个相当令人困惑的算法集合,我可以使用这些算法来加密信用卡详细信息。哪个是最好的?

对于相对较短的字符串,它显然需要安全。

编辑:我在英国,我知道只要永远不会存储三位数的 CVV 号码,我们就可以存储加密的信用卡详细信息。并感谢大家的好评。

最佳答案

没有冒犯,但这个问题有点“误导”。没有“银弹”解决方案。我建议一般阅读密码学,然后进行一些威胁建模。您应该问自己一些问题(绝不是完整的列表):

  • 进行加密的模块是需要解密的模块(在这种情况下使用对称加密)还是会将数据发送到将使用它的另一个模块(在另一台机器上)(在这种情况下你应该考虑公钥加密)
  • 你想保护什么?有人访问数据库但没有源代码(在这种情况下,您可以将加密 key 直接硬编码到源代码中)?有人在嗅探您的本地网络(您应该考虑像 IPSec 这样的透明解决方案)?有人偷了你的服务器(即使在数据中心也可能发生——在这种情况下应该考虑全盘加密)?
  • 你真的需要保留数据吗?不能直接传给信用卡处理商,得到确认后抹掉吗?您不能将其存储在客户端本地的 cookie 或 Flash LSO 中吗?如果您将其存储在客户端,请确保在将其放入 cookie 之前在服务器端对其进行加密。此外,如果您使用 cookie,请确保仅将它们设为 http。
  • 比较数据的相等性是否足够(即客户给我的数据与我拥有的数据相同)?如果是这样,请考虑存储它的哈希值。因为信用卡号相对较短并且使用的符号集较少,所以在散列之前应该为每个卡号生成一个唯一的盐。

  • 稍后编辑:请注意,来自同一类别的标准加密算法(例如 3DES 和 AES - 都是对称 block 密码)具有相当的强度。大多数(商业)系统没有被破坏,因为有人暴力破解了他们的加密,而是因为他们的威胁建模不够详细(或者他们没有任何东西)。例如,您可以加密所有数据,但如果您碰巧有一个容易受到 SQL 注入(inject)攻击的面向公众的 Web 界面,那么它对您没有多大帮助。

    关于.net - 是否有用于信用卡加密的最佳 .NET 算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220/

    相关文章:

    .net - 为什么过滤事件时某些 GUI 控件的类型智能感知/类型推断存在差异

    security - 是否应该始终依赖错误检测机制?

    sql-server - 如何从 SQL Server 解密密码?

    java - SSL连接测试

    c# - 绘制控件

    c# - winforms - 两次显示相同的表格?

    c# - 如何在 C# 中解析 JsonObject

    asp.net - 为什么需要执行服务器端验证?

    security - 如何保持公钥静态,但轮换证书

    java - 重启服务器后JWT失效