C# Windows 应用程序(不是 wpf)将文本框中的信用卡号屏蔽为输入,然后验证和处理信用卡号
Posted
技术标签:
【中文标题】C# Windows 应用程序(不是 wpf)将文本框中的信用卡号屏蔽为输入,然后验证和处理信用卡号【英文标题】:C# Windows Application (not wpf) mask credit card number in text box as being entered followed by validation and processing of credit card number 【发布时间】:2013-04-10 20:56:25 【问题描述】:我支持接受和处理信用卡的 C# Windows 应用程序。但是由于新规则,我需要在输入信用卡号时对其进行屏蔽。因此,如果第一个数字是 4,则在输入下一个数字(例如 9)之前它是可见的,然后文本框显示 *9。
我曾想过使用 maskedtextbox,但字符都是“*”,但我需要显示最后输入的字符。
有什么最佳做法可以做到这一点吗?请记住,我需要这些数字并在处理信用卡之前运行验证,然后处理信用卡并将其存储在数据库中。我已经加密了数据库中的 CC 字段。
任何建议/帮助将不胜感激。
【问题讨论】:
【参考方案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 合规性问题。仅将这些值加密到数据库中是不够的,您需要密钥管理策略、密钥轮换计划和更多堆。希望您已经知道这一切,但如果您不知道,请仅提及它。
【讨论】:
以上是关于C# Windows 应用程序(不是 wpf)将文本框中的信用卡号屏蔽为输入,然后验证和处理信用卡号的主要内容,如果未能解决你的问题,请参考以下文章
wpf程序调用cmd命令行的方法(C#语言调用C++写的程序)?
什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?
在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL