0

知りたいのですが、TripleDES暗号化(keysize(168)192ビット)を使用してユーザーにキーを尋ね、ユーザーが実際の暗号のサイズと比較して多かれ少なかれサイズのキーを提供した場合、どうすればよいですか?キーにString.PadLeft またはを使用して 0 または 1 を追加するだけですか? String.PadRightキーにランダムな文字列を追加する組み込みのメソッド/アイデア/ライブラリ/トリッキーなコードはありますか? もしそうなら、プロセスを逆にすることは可能ですか?

ハッシュ アルゴリズムを使用することを望んでいましたが、.Net は出力サイズ 192 ビットのハッシュ アルゴリズムをサポートしていません。それで、これに対する解決策はありますか?

この単純なコードは、より明確にするためのものです: (暗号化部分のみ)

 static void Main(string[] args)
    {

        Console.WriteLine("Enter Plain Text: ");
        string original = Console.ReadLine();
        Console.WriteLine("Enter The Key: ");
        string keyString = Console.ReadLine();
        byte[] data = Encoding.UTF8.GetBytes(original);
        byte[] key = Encoding.UTF8.GetBytes(keyString);
        TripleDESCryptoServiceProvider myTripleDES = new TripleDESCryptoServiceProvider();
        byte[] encrypted = EncryptString(data, key, myTripleDES.IV);
        string encrypt = Convert.ToBase64String(encrypted);
        string decrypted = DecryptStringFromBytes(encrypted, key, myTripleDES.IV);
        Console.WriteLine("encryted: " + encrypt);
        Console.WriteLine("decrypted: " + decrypted);
        Console.ReadLine();

    }



    static byte[] EncryptString(byte[] data, byte[] Key, byte[] IV)
    {


        TripleDESCryptoServiceProvider tdsAlg = new TripleDESCryptoServiceProvider();
        tdsAlg.BlockSize = 64;
        tdsAlg.KeySize = 192;
        tdsAlg.Padding = PaddingMode.PKCS7;
        tdsAlg.Mode = CipherMode.CBC;
        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

0 に答える 0