C#之Aes文件的加密和加密


前幾天遇到一個關於使用Aes算法加密解密字符串或者txt文件的問題,接下來我將用C#來編程aes算法加密和解密,代碼如下

 這是button的核心代碼:
private void Button_Click(object sender, RoutedEventArgs e) { string str1 = "明文.txt"; string str2 = "密文.txt"; if (p1.Password.Length<5) { MessageBox.Show("密碼不能低於5位"); return; } byte[] key, iv; aes.GenKeyIV(p1.Password, out key, out iv); string ss = ""; FileStream fs = new FileStream(str1, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); ss = sr.ReadToEnd(); fs.Close(); sr.Close(); a1.Text = "原始字符串:" + ss; byte[] data1 = aes.EncryptString(str1, str2, key, iv); string encryptedString = Convert.ToBase64String(data1); a1.Text += "\n加密后的字符串:" + encryptedString; byte[] data2 = Convert.FromBase64String(encryptedString); string s = aes.DescrptString(data2, key, iv); a1.Text += "\n解密后的字符串:" + s; }
創建一個aes類,核心代碼為:
public static byte[] EncryptString(string str1, string str2, byte[] key, byte[] iv)  //使用AES算法加密字符串
        {
            string ss = "";
            FileStream fs = new FileStream(str1, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs);
            ss = sr.ReadToEnd();
            fs.Close();
            sr.Close();

            FileStream fs1 = new FileStream(str2, FileMode.Create, FileAccess.Write);
            using (Aes aesAlg = Aes.Create())
            {
                ICryptoTransform encryptor = aesAlg.CreateEncryptor(key, iv);
                CryptoStream cs = new CryptoStream(fs1, encryptor, CryptoStreamMode.Write);
                using (StreamWriter sw = new StreamWriter(cs))
                {
                    sw.Write(ss);
                }
                cs.Close();
                fs1.Close();
            }
            fs1 = new FileStream(str2, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs1);
            byte[] encrypted = br.ReadBytes(10240);
            br.Close();
            fs1.Close();
            return encrypted;
        }
        public static string DescrptString(byte[] data, byte[] key, byte[] iv)  //使用AES算法解密字符串
        {
            string str = "";
            using (Aes aesAlg = Aes.Create())
            {
                ICryptoTransform decryptor = aesAlg.CreateDecryptor(key, iv);
                MemoryStream ms = new MemoryStream(data);
                CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
                using (StreamReader sr = new StreamReader(cs))
                {
                    str = sr.ReadToEnd();
                }
                cs.Close();
                ms.Close();
            }
            return str;
        }
        public static void GenKeyIV(string password, out byte[] key, out byte[] iv)   //根據提供的密碼生成key和IV
        {
            using (Aes aes = Aes.Create())
            {
                key = new byte[aes.Key.Length];
                byte[] pwdBytes = Encoding.UTF8.GetBytes(password);
                for (int i = 0; i < pwdBytes.Length; i++)
                {
                    key[i] = pwdBytes[i];
                }
                iv = new byte[aes.IV.Length];
                for (int i = 0; i < pwdBytes.Length; i++)
                {
                    iv[i] = pwdBytes[i];
                }
            }
        }
        public static void GenKeyIV(out byte[] key, out byte[] iv)   //隨機生成Key和IV
        {
            using (Aes aes = Aes.Create())
            {
                key = aes.Key;
                iv = aes.IV;
            }
        }

運行之后的結果為:

 

加密后的字符串會根據你填寫的密碼框數據而改變。

以上就是C#運用AES算法加密的過程,如果對大家有幫助的話,可以點波關注或收藏哦。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM