Eti*_*nne 1 c# asp.net cobol transoft
我的用户在数据库中保存了密码字段,例如"0!ZWQ2".我必须将用户输入密码从"aA1234"解读为"0!ZWQ2"并将其与数据库中的数据进行比较.
我比较的2个字符串是:
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890""9setybcpqwiuvxr108daj5'-`〜!@#$%^&*()_ + |}] [{:.?/ <>,; ZWQ2 @#34KDA"
这样a = 9和0 = A.
我怎么会用C#做这个,有什么想法吗?
我只需要从用户输入中获取密码字段并将其加密为有趣的文本,以将其与数据库中的数据进行比较.
任何帮助将不胜感激.
问候艾蒂安
更新:(2009年2月10日)感谢大家的回复.请注意,我确实意识到有更好的方式来处理这个问题.但请注意,我正在创建一个ASP.NET应用程序,它坐在SharePoint内部连接到Cobol平面文件数据而不是正确的数据库.使用Transoft将我的ASP.NET(ODBC连接器)连接到Cobol平面文件.所以我必须坚持使用这个代码,这不会在我的私人网站上使用.我也无法控制何时在Cobol中创建密码.
有什么特殊原因不使用标准的hash + salt来存储密码,而不是使用Caesars密码?
应该解决的一种方法(未经测试的代码):
new string("aA1234".ToCharArray().Select(c => ScrambleChars[OriginalChars.IndexOf(c)]).ToArray());
Run Code Online (Sandbox Code Playgroud)
以下是转换的快速,快速和较少的代码示例.
C#中的代码:
char[] OriginalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
char[] ScrambleChars = "9setybcpqwiuvxr108daj5'-`~!@#$%^&()+|}][{:.?/<>,;ZWQ2@#34KDART".ToCharArray();
string TextToTransfer = "Hello";
string NewText = "";
foreach (char c in TextToTransfer)
{
NewText = NewText + ScrambleChars[Array.IndexOf<char>(OriginalChars, c)].ToString();
}
Console.WriteLine(NewText);
Run Code Online (Sandbox Code Playgroud)
VB中的代码:
Dim OriginalChars() As Char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
Dim ScrambleChars() As Char = "9setybcpqwiuvxr108daj5'-`~!@#$%^&()+|}][{:.?/<>,;ZWQ2@#34KDART"
Dim TextToTransfer As String = "Hello"
Dim NewText As String = ""
For Each c As Char In TextToTransfer
NewText += ScrambleChars(Array.IndexOf(OriginalChars, c))
Next
MsgBox(NewText)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |