加解密1-流

加密:

 1         /// <summary>
 2         /// 使用指定的加密算法加密流
 3         /// </summary>
 4         /// <param name="inStream"></param>
 5         /// <param name="provider"></param>
 6         /// <returns>加密后的流</returns>
 7         public static Stream GetEncryptedStream(Stream inStream, SymmetricAlgorithm provider) 
 8         {
 9             MemoryStream outStream = new MemoryStream();
10             //以加密方式写入到outStream
11             CryptoStream encryptStream = new CryptoStream(outStream, provider.CreateEncryptor(), CryptoStreamMode.Write);
12 
13             int numBytes;
14             byte[] inputBytes = new byte[1024];
15             while ((numBytes = inStream.Read(inputBytes, 0, inputBytes.Length)) != 0)
16             {
17                 encryptStream.Write(inputBytes, 0, numBytes);
18             }
19             encryptStream.FlushFinalBlock();
20 
21             //回到输出的流的起点
22             outStream.Position = 0;
23 
24             //加密后的数据
25             return outStream;
26         }
27 
28 
29        /// <summary>
30         /// 使用指定的加密算法加密流
31         /// </summary>
32         /// <param name="inStream"></param>
33         /// <param name="provider"></param>
34         /// <returns>加密后的流</returns>
35         public static Stream GetEncryptedStream(Stream inStream, SymmetricAlgorithm provider) 
36         {
37             MemoryStream outStream = new MemoryStream();
38             //以加密方式读取inStream
39             CryptoStream encryptStream = new CryptoStream(inStream, provider.CreateEncryptor(), CryptoStreamMode.Read);
40 
41             int numBytes;
42             byte[] inputBytes = new byte[1024];
43             while ((numBytes = encryptStream.Read(inputBytes, 0, inputBytes.Length)) != 0)
44             {
45                 outStream.Write(inputBytes, 0, numBytes);
46             }
47             //回到输出的流的起点
48             outStream.Position = 0;
49 
50             //加密后的数据
51             return outStream;
52         }

解密:

 1         /// <summary>
 2         /// 使用指定的算法提供器解密流
 3         /// </summary>
 4         /// <param name="inStream"></param>
 5         /// <param name="provider"></param>
 6         /// <returns>解密后的流</returns>
 7         public static Stream GetDecryptedStream(Stream inStream,SymmetricAlgorithm provider)
 8         {
 9             MemoryStream outStream = new MemoryStream();
10             //以解密方式读取inStream
11             CryptoStream decryptStream = new CryptoStream(inStream, provider.CreateDecryptor(), CryptoStreamMode.Read);
12             
13             int numBytes;
14             byte[] inputBytes = new byte[_bufferSize];
15             while ((numBytes = decryptStream.Read(inputBytes,0,inputBytes.Length)) !=0)
16             {
17                 outStream.Write(inputBytes, 0, numBytes);
18             }
19 
20             //回到输出的流的起点
21             outStream.Position = 0;
22 
23             return outStream;
24         }
25 
26         /// <summary>
27         /// 使用指定的算法提供器解密流
28         /// </summary>
29         /// <param name="inStream"></param>
30         /// <param name="provider"></param>
31         /// <returns>解密后的流</returns>
32         public static Stream GetDecryptedStream(Stream inStream,SymmetricAlgorithm provider)
33         {
34             MemoryStream outStream = new MemoryStream();
35             //以解密方式写入outStream 
36             CryptoStream decryptStream = new CryptoStream(outStream , provider.CreateDecryptor(), CryptoStreamMode.Write);
37             
38             int numBytes;
39             byte[] inputBytes = new byte[_bufferSize];
40             while ((numBytes = inStream.Read(inputBytes,0,inputBytes.Length)) !=0)
41             {
42                 decryptStream.Write(inputBytes, 0, numBytes);
43             }
44             decryptStream.FlushFinalBlock();
45             //回到输出的流的起点
46             outStream.Position = 0;
47 
48             return outStream;
49         }