譬如這段程式碼中的"order"陣列
我把一個字串用這個排序作亂序化
打亂後的字串再亂序一次居然輸出了原字串
static void Main(string[] args)
{
string content = "ABCED";
int[] order = new int[] { 4, 2, 1, 3, 0 };
string out1 = Chaos(content, order);
string out2 = Chaos(out1, order);
//DCBEA-ABCED
Console.Out.WriteLine($"{out1}-{out2}");
Console.ReadLine();
}
private static string Chaos(string content, int[] order)
{
char[] chars = content.ToCharArray();
StringBuilder sb = new StringBuilder();
foreach(int index in order)
sb.Append(chars[index]);
return sb.ToString();
}
當然,像這樣的陣列有非常多個(另外寫迴圈找出了許多)
但並不是隨便一個陣列都有相同效果
我想知道更多有關的知識
但是它叫什麼名字呢? 或者它尚未被定義?
我沒讀過密碼學,這只是我亂寫的加密器中的一部份
這像是排列加密(permutation cipher), 在您的例子中:
原始排列: 4 2 1 3 0
交換順序: 0 1 2 3 4
第一次:
字串第0位和第4位交換
字串第1位和第2位交換
字串第3位不變.
第二次:
字串第0位和第4位交換
字串第1位和第2位交換
字串第3位不變.
因此交換兩次就歸位了.
記憶中應該在計算機概論中有介紹過.
例如:
4 3 2 1 0是(4,0)和(3,1)交換, 2不動