Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中本地化密码验证?_C#_Localization_Special Characters - Fatal编程技术网

C# 如何在C中本地化密码验证?

C# 如何在C中本地化密码验证?,c#,localization,special-characters,C#,Localization,Special Characters,我正在尝试本地化一个现有的应用程序,该应用程序具有以下逻辑,试图验证密码文本框。我假设这不适用于具有用户可以在文本框中键入的特殊字符的语言。我说得对吗?我不认为我们想限制用户输入非英语类型的字符,即阿拉伯语、汉语等。。或者,有什么我不明白的吗 Regex ValidHex = new Regex("[A-Za-z1234567890_-]+", RegexOptions.IgnoreCase); if (!ValidHex.IsMatch(e.Text)) { e.Handled =

我正在尝试本地化一个现有的应用程序,该应用程序具有以下逻辑,试图验证密码文本框。我假设这不适用于具有用户可以在文本框中键入的特殊字符的语言。我说得对吗?我不认为我们想限制用户输入非英语类型的字符,即阿拉伯语、汉语等。。或者,有什么我不明白的吗

Regex ValidHex =
   new Regex("[A-Za-z1234567890_-]+", RegexOptions.IgnoreCase);
if (!ValidHex.IsMatch(e.Text))
{
   e.Handled = true;
}
不要储存密码

使用哈希表对密码进行散列,并进行比较。

不要存储密码


使用a散列密码并进行比较。

是否尝试使用\w而不是a-za-z?我打赌这会解决本地化问题。

您是否尝试过使用\w而不是A-za-z?我打赌这将解决本地化问题。

您可以这样做以支持unicode字符:

[\p{L}\p{N}_-]+

作为旁注:是否有任何特定原因需要限制允许的字符数?

您可以这样做以支持unicode字符:

[\p{L}\p{N}_-]+

作为旁注:是否有任何特定的原因需要限制允许的字符数?

正则表达式不是一个特别好的表达式,它限制用户选项,并且不强制执行密码“a”和“aaaaaaa”将传递的任何内容。该名称表明它是从一个验证十六进制数的表达式中采用的。您至少必须在reg ex或as e.Text.Length>8中添加最小长度条件

一个更合理的表达式将验证是否至少使用了多个组中的1个字符,我发现:@^?=.[0-9]?=.[A-z]?=.[A-z]?=.[A-z]?=.*\W。 再次添加最小长度检查


这个例子没有解决本地化问题,它允许非拉丁字符只通过'.',并且不认为它们满足[-Z]或[-Z]要求。 正则表达式不是一个特别好的表达式,它限制用户的选项,并且不强制执行密码“a”和“aaaaaaa”将传递的任何内容。该名称表明它是从一个验证十六进制数的表达式中采用的。您至少必须在reg ex或as e.Text.Length>8中添加最小长度条件

一个更合理的表达式将验证是否至少使用了多个组中的1个字符,我发现:@^?=.[0-9]?=.[A-z]?=.[A-z]?=.[A-z]?=.*\W。 再次添加最小长度检查


这个例子没有解决本地化问题,它允许非拉丁字符只通过'.',并且不认为它们满足[-Z]或[-Z]要求。 @Ben S:问题中提到了密码存储在哪里?一般来说,这是一个很好的建议,但也与问题完全正交。他没有说他在存储密码,他的代码片段也没有暗示他在存储密码。@Ben S:我和Fredrik在一起-他只是想加强密码,没有提到存储。@Frederik:那会在最后一句。@Ben S:问题中提到了密码存储在哪里?总的来说,这是个好建议,而且与所问的问题完全正交。他没有说他在存储密码,他的代码片段也没有暗示他在存储。@Ben S:我和Fredrik在一起-他只是想加强密码,没有提到存储。@Frederik:那会在最后一句话中。没错,如果用户想添加奇怪的安全代码,为什么要阻止呢?同意;对于你的用户来说,从来没有一个很好的理由来限制甚至要求密码中的某些字符组合。确切地说,如果用户想要添加奇怪的安全代码,为什么要阻止呢?同意;对于您的用户来说,永远没有理由限制甚至要求密码中的某些字符组合。