我支持接受和处理信用卡的C#windows应用程序。但是由于新的规则,我需要屏蔽输入时的信用卡号码。因此,如果第一个数字是4,则在输入下一个数字(例如9)之前可见,然后文本框显示* 9.
我想过使用maskedtextbox然后字符都是“*”但我需要显示最后输入的字符。
这样做有什么最佳做法吗?请记住,我需要这些数字并在处理信用卡之前运行验证,然后处理信用卡并将其存储在数据库中。我已经在数据库中加密了CC字段。
任何建议/帮助都将受到高度赞赏。
答案 0 :(得分:1)
简单的方法是有两个文本框。用户实际输入的数字,另一个显示该输入的屏蔽版本。将屏蔽控件放在输入控件上。
使用TextChanged
或KeyUp
个事件来跟踪更改并进行更新。
例如
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合规性问题。仅仅将这些值加密到数据库中是不够的,您需要密钥管理策略,密钥轮换计划和更多密钥。希望你已经知道了这一切,但只要你提到它就不应该知道。