最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#對稱加密(AES加密)每次生成的結(jié)果都不同的實(shí)現(xiàn)思路和代碼實(shí)例

 更新時(shí)間:2015年07月04日 09:22:45   投稿:junjie  
這篇文章主要介紹了C#對稱加密(AES加密)每次生成的結(jié)果都不同的實(shí)現(xiàn)思路和代碼實(shí)例,每次解密時(shí)從密文中截取前16位,這就是實(shí)現(xiàn)隨機(jī)的奧秘,本文同時(shí)給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下

思路:使用隨機(jī)向量,把隨機(jī)向量放入密文中,每次解密時(shí)從密文中截取前16位,其實(shí)就是我們之前加密的隨機(jī)向量。

 代碼:

public static string Encrypt(string plainText, string AESKey)
{
  RijndaelManaged rijndaelCipher = new RijndaelManaged();
  byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);//得到需要加密的字節(jié)數(shù)組
  rijndaelCipher.Key = Convert.FromBase64String(AESKey);//加解密雙方約定好密鑰:AESKey
  rijndaelCipher.GenerateIV();
  byte[] keyIv = rijndaelCipher.IV;
  byte[] cipherBytes = null;
  using (MemoryStream ms = new MemoryStream())
  {
    using (CryptoStream cs = new CryptoStream(ms, rijndaelCipher.CreateEncryptor(), CryptoStreamMode.Write))
    {
      cs.Write(inputByteArray, 0, inputByteArray.Length);
      cs.FlushFinalBlock();
      cipherBytes = ms.ToArray();//得到加密后的字節(jié)數(shù)組
      cs.Close();
      ms.Close();
    }
  }
  var allEncrypt = new byte[keyIv.Length + cipherBytes.Length];
  Buffer.BlockCopy(keyIv, 0, allEncrypt, 0, keyIv.Length);
  Buffer.BlockCopy(cipherBytes, 0, allEncrypt, keyIv.Length * sizeof(byte), cipherBytes.Length);
  return Convert.ToBase64String(allEncrypt);
}
 
public static string Decrypt(string showText, string AESKey)
{
  string result = string.Empty;
  try
  {
    byte[] cipherText = Convert.FromBase64String(showText);
    int length = cipherText.Length;
    SymmetricAlgorithm rijndaelCipher = Rijndael.Create();
    rijndaelCipher.Key = Convert.FromBase64String(AESKey);//加解密雙方約定好的密鑰
    byte[] iv = new byte[16];
    Buffer.BlockCopy(cipherText, 0, iv, 0, 16);
    rijndaelCipher.IV = iv;
    byte[] decryptBytes = new byte[length - 16];
    byte[] passwdText = new byte[length - 16];
    Buffer.BlockCopy(cipherText, 16, passwdText, 0, length - 16);
    using (MemoryStream ms = new MemoryStream(passwdText))
    {
      using (CryptoStream cs = new CryptoStream(ms, rijndaelCipher.CreateDecryptor(), CryptoStreamMode.Read))
      {
        cs.Read(decryptBytes, 0, decryptBytes.Length);
        cs.Close();
        ms.Close();
      }
    }
    result = Encoding.UTF8.GetString(decryptBytes).Replace("\0", "");  ///將字符串后尾的'\0'去掉
  }
  catch { }
  return result;
}

調(diào)用:

string jiaMi = MyAESTools.Encrypt(textBox1.Text, "abcdefgh12345678abcdefgh12345678");
 
string jieMi = MyAESTools.Decrypt(textBox3.Text, "abcdefgh12345678abcdefgh12345678");


相關(guān)文章

  • C#實(shí)現(xiàn)Oracle批量寫入數(shù)據(jù)的方法詳解

    C#實(shí)現(xiàn)Oracle批量寫入數(shù)據(jù)的方法詳解

    往數(shù)據(jù)庫批量寫入數(shù)據(jù),這個(gè)功能使用頻率相對還是比較高的,特別是在做一些導(dǎo)入等功能的時(shí)候。本文為大家介紹了C#實(shí)現(xiàn)Oracle批量寫入數(shù)據(jù)的方法,需要的可以參考一下
    2022-11-11
  • C#多線程同步lock、Mutex的實(shí)現(xiàn)

    C#多線程同步lock、Mutex的實(shí)現(xiàn)

    本文主要介紹了C#多線程同步lock、Mutex的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 深入多線程之:內(nèi)存柵欄與volatile關(guān)鍵字的使用分析

    深入多線程之:內(nèi)存柵欄與volatile關(guān)鍵字的使用分析

    本篇文章對內(nèi)存柵欄與volatile關(guān)鍵字的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Unity實(shí)現(xiàn)注冊登錄模塊

    Unity實(shí)現(xiàn)注冊登錄模塊

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)注冊登錄模塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C#新手常犯的錯(cuò)誤匯總

    C#新手常犯的錯(cuò)誤匯總

    這篇文章主要介紹了C#新手常犯的錯(cuò)誤匯總,對于經(jīng)驗(yàn)豐富的C#程序員同樣具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C#?Winform實(shí)現(xiàn)在Pancel上繪制矩形

    C#?Winform實(shí)現(xiàn)在Pancel上繪制矩形

    在C#的WinForms應(yīng)用程序中,Panel控件本身不直接支持繪圖功能,但可以通過在Panel上覆蓋OnPaint方法或者使用Graphics對象來在Panel上繪制圖形,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2025-01-01
  • C# FileStream讀寫的文本操作代碼分析

    C# FileStream讀寫的文本操作代碼分析

    這篇文章主要分享了個(gè)人使用C# FileStream實(shí)現(xiàn)的讀寫的文本操作的小程序,主要是復(fù)習(xí)下對filestream的理解,希望對大家學(xué)習(xí)C#能夠有所幫助
    2016-07-07
  • 詳解C# 線程的掛起與喚醒

    詳解C# 線程的掛起與喚醒

    這篇文章主要介紹了詳解C# 線程的掛起與喚醒,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-05-05
  • WPF彈出自定義窗口的方法

    WPF彈出自定義窗口的方法

    這篇文章主要介紹了WPF彈出自定義窗口的方法,結(jié)合實(shí)例形式分析了WPF自定義窗口的創(chuàng)建與調(diào)用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • C#中實(shí)現(xiàn)一次執(zhí)行多條帶GO的sql語句實(shí)例

    C#中實(shí)現(xiàn)一次執(zhí)行多條帶GO的sql語句實(shí)例

    這篇文章主要介紹了C#中實(shí)現(xiàn)一次執(zhí)行多條帶GO的sql語句,以實(shí)例形式較為詳細(xì)的分析了C#執(zhí)行sql語句的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09

最新評論

墨脱县| 南阳市| 临沂市| 高碑店市| 浦北县| 宜黄县| 宽城| 淳化县| 买车| 辽源市| 澎湖县| 承德市| 长治县| 辽宁省| 河南省| 灌阳县| 鸡西市| 鄂托克前旗| 醴陵市| 昭平县| 商水县| 乌审旗| 凤翔县| 南丰县| 珲春市| 孟村| 克东县| 比如县| 武宁县| 大关县| 通城县| 襄城县| 莱州市| 调兵山市| 连城县| 聂荣县| 云梦县| 遵化市| 孝昌县| 夏邑县| 航空|