C# 如何替换字符串中的多个字符进行密码解密
我想在一个文本框中输入一个加密的密码,然后按下一个按钮,在另一个文本框中输入解密的密码。 加密非常简单,我有一个excel表,其中每个字符都有其等效项。所以基本上我需要将每个字符替换为它的减缩等价物,我不知道这是否有意义 例如: 最简单的方法是什么?这够简单吗C# 如何替换字符串中的多个字符进行密码解密,c#,encryption,replace,str-replace,password-encryption,C#,Encryption,Replace,Str Replace,Password Encryption,我想在一个文本框中输入一个加密的密码,然后按下一个按钮,在另一个文本框中输入解密的密码。 加密非常简单,我有一个excel表,其中每个字符都有其等效项。所以基本上我需要将每个字符替换为它的减缩等价物,我不知道这是否有意义 例如: 最简单的方法是什么?这够简单吗 var map = new (char before, char after)[] { ('@', 'p'), ('#', 'a'), (')', 's'), }; var input = "@#))";
var map = new (char before, char after)[]
{
('@', 'p'), ('#', 'a'), (')', 's'),
};
var input = "@#))";
var output = map.Aggregate(input, (a, x) => a.Replace(x.before, x.after));
或更古老的学校:
var output = input;
foreach (var m in map)
{
output = output.Replace(m.before, m.after);
}
您可以使用字典将“加密”字符映射到“解密”字符:
var repl = new Dictionary<char, char> { {'@', 'p'}, {'#', 'a'}, {')', 's'} };
还是带一个环
var sb = new StringBuilder();
foreach (var c in input)
{
sb.Append(repl[c]);
}
var output = sb.ToString();
你只是一对一地替换字符。这是对的吗?虽然这是一个很好的学习练习,但在进行实际操作时,您应该避免使用这种类型的算法,并使用经过良好测试和健壮的算法(例如System.Security.Cryptography命名空间)。另一件事,尝试避免将密码存储在数据库中(纯文本或密码),通常不需要(在正常使用情况下,您可以存储密码的散列)通常不起作用,如果
after
值中的一个也出现为before
value@KlausGütter-这可能是实际的设计。我还使用了数组而不是字典来允许显式设置顺序。
var input = "@#))";
var output = new string(input.Select(c => repl[c]).ToArray());
var sb = new StringBuilder();
foreach (var c in input)
{
sb.Append(repl[c]);
}
var output = sb.ToString();