2. 產生 S-DES 的兩支金鑰

string asSort(string a, string sort)
{
    string res = "";

    for (int i = 0; i < sort.Length; i++)
    {
        res += a[sort[i] - '0'];
    }

    return res;
}

void print(string s)
{
    for (int i = 0; i < 10; i++)
    {
        if (i >= s.Length)
        {
            Console.Write(" ");
        }
        else Console.Write(s[i]);
        Console.Write(' ');
    }
    Console.Write($"  =  0x{Convert.ToInt16(s, 2):x}\n");
}

Console.Write("請輸入10位元的key: ");
var key = Console.ReadLine();
Console.Write("\n輸入 key: ");
print(key);

key = asSort(key, "2416390875");
Console.Write("重排列10: ");
print(key);

key = asSort(key, "1234067895");
Console.Write("左旋轉1 : ");
print(key);

var key1 = asSort(key, "52637498");
Console.Write("Key1輸出: ");
print(key1);

key = asSort(key, "2340178956");
Console.Write("左旋轉2 : ");
print(key);

var key2 = asSort(key, "52637498");
Console.Write("Key2輸出: ");
print(key2);

Last updated