2

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

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

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

任何建议/帮助将不胜感激。

4

1 回答 1

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 合规性问题。仅将这些值加密到数据库中是不够的,您需要密钥管理策略、密钥轮换计划和更多堆。希望您已经知道所有这些,但如果您不知道,请仅提及它。

于 2013-04-17T23:33:17.213 回答