2013-04-17 5 views
1

신용 카드를 수락하고 처리하는 C# Windows 응용 프로그램을 지원하고 있습니다. 하지만 새로운 규정으로 인해 신용 카드 번호가 입력 될 때이를 숨길 필요가 있습니다. 따라서 첫 번째 숫자가 4이면 다음 숫자를 입력 할 때까지 표시되고 (예 : 9), 텍스트 상자에 * 9가 표시됩니다.C# Windows 응용 프로그램 (wpf가 아닌)은 입력란에 신용 카드 번호를 입력 한 다음 신용 카드 번호를 확인하고 처리합니다.

maskedtextbox를 사용한다고 생각했지만 문자는 모두 "*"이지만 입력 한 마지막 문자를 표시해야합니다.

이렇게하는 것이 가장 좋은 방법이 있습니까? 신용 카드가 처리되기 전에 해당 번호가 필요하고 유효성 검사를 실행 한 다음 신용 카드를 처리하여 데이터베이스에 저장하십시오. 이미 암호화 된 CC 필드가 있습니다.

모든 제안/도움을 주시면 감사하겠습니다.

답변

1

간단한 방법은 두 개의 텍스트 상자를 사용하는 것입니다. 하나는 사용자가 실제로 숫자를 입력하고 다른 하나는 입력의 마스크 된 버전을 표시합니다. 마스크 된 컨트롤을 입력 컨트롤 위에 놓습니다.

변경 사항을 추적하고 업데이트하려면 TextChanged 또는 KeyUp 이벤트를 사용하십시오.

예를 들어, 당신은 가능성이 PCI 준수에 문제가

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, '*'); 
} 

넘어. 이 값을 데이터베이스로 암호화하는 것만으로는 충분하지 않으며 키 관리 정책, 키 순환 스케쥴 및 힙이 더 필요합니다. 바라기를 당신은이 모든 것을 이미 알고 있지만 단지 그것을 언급하는 것은 당신이 깨닫지 못하는 경우에 한합니다.