zoukankan      html  css  js  c++  java
  • 关于 Rijndael 加密

    MSDN https://msdn.microsoft.com/zh-cn/library/system.security.cryptography.rijndaelmanaged(v=vs.110).aspx 类的相关属性和方法。

    在此我将MSDN里给的用法做放在这里以便以后直接使用

      1 using System;
      2 using System.IO;
      3 using System.Security.Cryptography;
      4 
      5 namespace RijndaelManaged_Example
      6 {
      7     class RijndaelExample
      8     {
      9         public static void Main()
     10         {
     11             Start("Here is some data to encrypt!");
     12 
     13             Console.ReadKey();
     14         }
     15         private static void Start(string original)
     16         {
     17             try
     18             {
     19                 using (RijndaelManaged myRijndael = new RijndaelManaged())
     20                 {
     21                     myRijndael.GenerateKey();//随机生成 key
     22                     myRijndael.GenerateIV();//随机生成 iv
     23                     // 把字符串加密,返回一个 byte[]
     24                     byte[] encrypted = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV);
     25                     // 把之前得到的字节数组解码
     26                     string roundtrip = DecryptStringFromBytes(encrypted, myRijndael.Key, myRijndael.IV);
     27 
     28                     //Display the original data and the decrypted data.
     29                     Console.WriteLine("Original:   {0}", original);
     30                     Console.WriteLine("Round Trip: {0}", roundtrip);
     31                 }
     32             }
     33             catch (Exception e)
     34             {
     35                 Console.WriteLine("Error: {0}", e.Message);
     36             }
     37         }
     38 
     39         static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
     40         {
     41             // Check arguments.
     42             if (plainText == null || plainText.Length <= 0)
     43                 throw new ArgumentNullException("plainText");
     44             if (Key == null || Key.Length <= 0)
     45                 throw new ArgumentNullException("Key");
     46             if (IV == null || IV.Length <= 0)
     47                 throw new ArgumentNullException("IV");
     48             byte[] encrypted;
     49             // Create an RijndaelManaged object
     50             // with the specified(规定的) key and IV.
     51             using (RijndaelManaged rijAlg = new RijndaelManaged())
     52             {
     53                 rijAlg.Key = Key;
     54                 rijAlg.IV = IV;
     55 
     56                 // Create a decrytor to perform the stream transform.
     57                 ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
     58 
     59                 // Create the streams used for encryption.
     60                 using (MemoryStream msEncrypt = new MemoryStream())
     61                 {
     62                     using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
     63                     {
     64                         using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
     65                         {
     66 
     67                             //Write all data to the stream.
     68                             swEncrypt.Write(plainText);
     69                         }
     70                         encrypted = msEncrypt.ToArray();
     71                     }
     72                 }
     73             }
     74             return encrypted;
     75         }
     76 
     77         static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
     78         {
     79             // Check arguments.
     80             if (cipherText == null || cipherText.Length <= 0)
     81                 throw new ArgumentNullException("cipherText");
     82             if (Key == null || Key.Length <= 0)
     83                 throw new ArgumentNullException("Key");
     84             if (IV == null || IV.Length <= 0)
     85                 throw new ArgumentNullException("IV");
     86 
     87             // Declare the string used to hold
     88             // the decrypted text.
     89             string plaintext = null;
     90 
     91             // Create an RijndaelManaged object
     92             // with the specified key and IV.
     93             using (RijndaelManaged rijAlg = new RijndaelManaged())
     94             {
     95                 rijAlg.Key = Key;
     96                 rijAlg.IV = IV;
     97 
     98                 // Create a decrytor to perform the stream transform.
     99                 ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
    100 
    101                 // Create the streams used for decryption.
    102                 using (MemoryStream msDecrypt = new MemoryStream(cipherText))
    103                 {
    104                     using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
    105                     {
    106                         using (StreamReader srDecrypt = new StreamReader(csDecrypt))
    107                         {
    108 
    109                             // Read the decrypted bytes from the decrypting stream
    110                             // and place them in a string.
    111                             plaintext = srDecrypt.ReadToEnd();
    112                         }
    113                     }
    114                 }
    115 
    116             }
    117 
    118             return plaintext;
    119 
    120         }
    121     }
    122 }
  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/Yukisora/p/8283517.html
Copyright © 2011-2022 走看看