当前位置:  开发笔记 > 编程语言 > 正文

比较2个字符串时如何用另一个值替换一个值?

如何解决《比较2个字符串时如何用另一个值替换一个值?》经验,为你挑选了2个好方法。

我的用户在数据库中保存了密码字段,例如"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中创建密码.



1> Mark S. Rasm..:

有什么特殊原因不使用标准的hash + salt来存储密码,而不是使用Caesars密码?

应该解决的一种方法(未经测试的代码):

new string("aA1234".ToCharArray().Select(c => ScrambleChars[OriginalChars.IndexOf(c)]).ToArray());



2> Sachin Chava..:

以下是转换的快速,快速和较少的代码示例.

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(OriginalChars, c)].ToString();
        }
        Console.WriteLine(NewText);

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)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有