0

私は最近「CryptoStream」を試していて、テキストを暗号化および復号化するというアイデアに出くわしました。Aesクラス。「名前空間: System.Security.Cryptography」

2 つの入力パラメーター (テキスト、パスワード) を使用してテキストを正常に暗号化する関数を作成した後

static byte[] Salt = { 18,39,27,48,82,32,12,92 };
        public static string EncryptAES(string txt, string Password) {
            Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(Password, Salt);
            RijndaelManaged RJM = new RijndaelManaged();
            RJM.Key = rfc.GetBytes(RJM.KeySize / 8);
            ICryptoTransform ICT = Aes.Create().CreateEncryptor(RJM.Key, RJM.IV);

            using (MemoryStream MS = new MemoryStream()) {
                using (CryptoStream CS = new CryptoStream(MS, ICT, CryptoStreamMode.Write)) {
                    using (StreamWriter SW = new StreamWriter(CS)) {
                        SW.Write(txt);
                    }
                }

                return Convert.ToBase64String(MS.ToArray());
            }
        }

テキストの解読の問題が発生しました。

テキストを復号化する私の試みは次のとおりです。

public static string DecryptAES(string EncryptedTxt, string Password) {
            Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(EncryptedTxt, Salt);
            RijndaelManaged RJM = new RijndaelManaged();
            RJM.Key = rfc.GetBytes(RJM.KeySize / 8);
            ICryptoTransform ICT = Aes.Create().CreateDecryptor(RJM.Key, RJM.IV);
            using (MemoryStream MS = new MemoryStream(Convert.FromBase64String(EncryptedTxt))) {
                using (CryptoStream CS = new CryptoStream(MS, ICT, CryptoStreamMode.Read)) {
                    using (StreamReader SR = new StreamReader(CS)) {
                        return SR.ReadToEnd();
                    }
                }
            }

でも; 次のエラーが発生するため、メモリストリームを文字列に変換してから元に戻す方法が無効だったようです:エラー: 値を null にすることはできません\nパラメータ名: inputBuffer

(MemoryStream MS = new MemoryStream(Convert.FromBase64String(EncryptedTxt))) を使用するとエラーが発生します

MemoryStream を文字列に変換して戻すにはどうすればよいですか?

前もって感謝します :-)

4

0 に答える 0