0

その非常に単純なコード。しかし、私が理解していないのBlocksizeは、 が 8 バイトの場合、Cipher サイズが 16 バイトであるのはなぜですか? と同じになると予想していますBlocksize。単純な考え方から、私は 64 ビットを平文として与え、64 ビットを暗号として持つことを期待しています。そして、ここでパディングを行う理由が本当にわかりません。8bytes( Blocksize) ごとに Cipher が 8 バイトずつ増えるようです。16bytes Block が 24bytes Cipher などになる。本当に知りたいです。

好奇心のために、8バイトブロックから8バイト暗号を使用する可能性/方法はありますか?

3DES コード: (暗号化部分のみ)

static void Main(string[] args)
    {

        Console.WriteLine("Enter Plain Text: ");
        string original =Console.ReadLine();
        TripleDESCryptoServiceProvider myTripleDES = new TripleDESCryptoServiceProvider();
        byte[] encrypted = EncryptStringToBytes(original,myTripleDES.Key, myTripleDES.IV);
        string encrypt = Convert.ToBase64String(encrypted);
        string decrypted = DecryptStringFromBytes(encrypted,myTripleDES.Key, myTripleDES.IV);
        Console.WriteLine("encryted: " +encrypt);
        Console.WriteLine("decrypted: " +decrypted);
        Console.ReadLine();

    }



    static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
    {
        byte [] data= Encoding.UTF8.GetBytes(plainText);
        Console.WriteLine("The Block length: " +data.Length);
        TripleDESCryptoServiceProvider tdsAlg = new TripleDESCryptoServiceProvider();
        tdsAlg.BlockSize = 64;
        tdsAlg.KeySize = 128;
        tdsAlg.Key = Key;  
        tdsAlg.IV = IV;  
        ICryptoTransform encryptor = tdsAlg.CreateEncryptor(tdsAlg.Key, tdsAlg.IV);
        byte[] encrypted = encryptor.TransformFinalBlock(data, 0, data.Length);
        Console.WriteLine("The Cipher length: " + encrypted.Length);
        return encrypted;
    }

ここに画像の説明を入力

4

1 に答える 1