我今天正在经历加密,我的同事告诉我一个更简单/自定义的方法,我所做的列在那里,所以你能告诉我那是什么类型的加密或 hashign 吗?他告诉我这是某种散列和加密的混合。对不起,愚蠢的问题,我是新来的。:) 下面的方法需要一个字符串(在我的例子中是密码)。反转它并制作一个字典(添加字典项如下所列)并匹配键和值并返回加密数据。
public static string Encrypt(string source)
{
string enCrypted = "";
try
{
source = Reverse(source);
Dictionary<char, char> sourceTable = AddDictionaryItems();
char[] sourceArray = source.ToCharArray();
StringBuilder encryptedData = new StringBuilder();
foreach (char chr in sourceArray)
{
KeyValuePair<char, char> Pair;
Pair = sourceTable.First(tuple => tuple.Key == chr);
encryptedData.Append(Pair.Value);
}
enCrypted=encryptedData.ToString();
}
catch (Exception ex)
{
}
return enCrypted;
}
以下方法将项目添加到字典中,项目基本上基于 ascii 代码。我遍历所有asciis,然后在字典中添加相应的字符。但真正的诀窍是在字典中添加项目时。例如,当我在字典中添加“A”作为键时,它的值将是“D”。变量“jump”指定键和值之间的差异。所以如果我的密码是“ABC”,如果我反转那个东西,它会返回“DEF”或“FED”。
public static Dictionary<char, char> AddDictionaryItems()
{
Dictionary<char, char> dc = new Dictionary<char, char>();
try
{
int initial = 33;
int jump = 3;
int final = 127 - jump;
for (int ascii = initial; ascii < final; ascii++)
{
dc.Add((char)ascii, (char)(ascii + jump));
}
for (int ascii = final; ascii < final + jump; ascii++)
{
dc.Add((char)ascii, (char)(initial));
initial++;
}
}
catch (Exception ex)
{
throw ex;
}
return dc;
}