C#Windows应用程序(不是wpf)在输入的文本框中屏蔽信用卡号,然后验证和处理信用卡号

时间:2013-04-17 22:14:02

标签: c# winforms credit-card pci-compliance

我支持接受和处理信用卡的C#windows应用程序。但是由于新的规则,我需要屏蔽输入时的信用卡号码。因此,如果第一个数字是4,则在输入下一个数字(例如9)之前可见,然后文本框显示* 9.

我想过使用maskedtextbox然后字符都是“*”但我需要显示最后输入的字符。

这样做有什么最佳做法吗?请记住,我需要这些数字并在处理信用卡之前运行验证,然后处理信用卡并将其存储在数据库中。我已经在数据库中加密了CC字段。

任何建议/帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

简单的方法是有两个文本框。用户实际输入的数字,另一个显示该输入的屏蔽版本。将屏蔽控件放在输入控件上。

使用TextChangedKeyUp个事件来跟踪更改并进行更新。

例如

if (textBoxEntry.Text.Length <= 1)
{
    textBoxMasked.Text = textBoxEntry.Text;
}
else
{
    string lastChar = textBoxEntry.Text.Substring(textBoxEntry.Text.Length-1, 1);
    textBoxMasked.Text = lastChar.PadLeft(textBoxEntry.Text.Length, '*');
}

除此之外,您可能还存在PCI合规性问题。仅仅将这些值加密到数据库中是不够的,您需要密钥管理策略,密钥轮换计划和更多密钥。希望你已经知道了这一切,但只要你提到它就不应该知道。