私は今日暗号化を行っていましたが、同僚はそれを行うためのより簡単な/カスタムの方法を教えてくれました.私がしたことはそこにリストされています. 彼は、これはある種のハッシュと暗号化の混合物であると私に言いました。ばかげた質問で申し訳ありませんが、私はここに新しいです。:)以下のメソッドは文字列(私の場合はパスワード)を取ります。それを逆にして辞書を作成し(辞書項目の追加は以下にリストされています)、キーと値を照合し、暗号化されたデータを返します。
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;
}