0

文字を数字に変換し、暗号化関数f(p)=(3p + 7)mod 26を適用してから、数字を文字に戻すことにより、メッセージNEEDHELPを暗号化します。回答:暗号化された形式:UTTQCTOA。

誰かがこの答えを得た方法を私に説明してもらえますか

4

1 に答える 1

1

まず、各文字に番号を割り当てる必要があります。

A = 0; B = 1; C = 2 ....

次に、取得した数値に関数を適用し、文字に変換します。

N は 13 なので、13 * 3 = 39、+ 7 = 46、mod 26 = 20

逆変換、20 = U

文のす​​べての文字でそれを行うと、暗号化された形式になります

これを行う C# コードは次のとおりです。

    private static string encrypt(string s)
    {
        char[] tmp = new char[s.Length];
        int i = 0;

        foreach (char c in s)
        {
            tmp[i] = (char)((((c - 'A') * 3 + 7) % 26) + 'A');
            i++;
        }

        return new string(tmp);
    }

そしてここであなたの復号化関数(これは面倒ですが動作します):

    private static string decrypt(string s)
    {
        string res = s;
        for (int i = 0; i < 5; i++)
            res = encrypt(res);

        return res;
    }
于 2013-03-10T18:15:44.033 に答える