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 }
  • 相关阅读:
    [模板]洛谷T3369 普通平衡树 链表&普通Treap
    C++语法知识点整理
    [模板]洛谷T3373 线段树 模板2
    [模板]洛谷T3372 线段树 模板1
    [模板]洛谷T3368 树状数组 模板2
    JSON
    code first迁移和部署
    序列化 (C#)
    Linq小记
    文件和注册表
  • 原文地址:https://www.cnblogs.com/Yukisora/p/8283517.html
Copyright © 2011-2022 走看看