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】:

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

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

【讨论】:

以上是关于C# Windows 应用程序(不是 wpf)将文本框中的信用卡号屏蔽为输入,然后验证和处理信用卡号的主要内容,如果未能解决你的问题,请参考以下文章

wpf程序调用cmd命令行的方法(C#语言调用C++写的程序)?

什么是最佳选择,Windows 窗体或 C# 中的 WPF 开发?

在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL

安装 C# 后,无法使用 WPF App 使用 SC.exe 创建 Windows 服务

WPF 或 Windows 窗体

如何允许从 Windows 资源管理器拖放到 C# WPF 应用程序中?