对称加密算法学习(1)

《对称加密算法学习(1)》
using
 System;
《对称加密算法学习(1)》

using
 System.Security.Cryptography;
《对称加密算法学习(1)》

using
 System.IO;
《对称加密算法学习(1)》

using
 System.Text;
《对称加密算法学习(1)》
《对称加密算法学习(1)》

namespace
 SqlResetPwd
《对称加密算法学习(1)》《对称加密算法学习(1)》

《对称加密算法学习(1)》
{
《对称加密算法学习(1)》    
class Program
《对称加密算法学习(1)》《对称加密算法学习(1)》    
《对称加密算法学习(1)》{
《对称加密算法学习(1)》        
static void Main(string[] args)
《对称加密算法学习(1)》《对称加密算法学习(1)》        
《对称加密算法学习(1)》{
《对称加密算法学习(1)》            
while (true
《对称加密算法学习(1)》《对称加密算法学习(1)》            
《对称加密算法学习(1)》
《对称加密算法学习(1)》                ConsoleKeyInfo i 
= Console.ReadKey(true);
《对称加密算法学习(1)》                
if (i.Key == ConsoleKey.Escape)
《对称加密算法学习(1)》《对称加密算法学习(1)》                
《对称加密算法学习(1)》{
《对称加密算法学习(1)》                    
break;
《对称加密算法学习(1)》                }

《对称加密算法学习(1)》                
else 
《对称加密算法学习(1)》《对称加密算法学习(1)》                
《对称加密算法学习(1)》{
《对称加密算法学习(1)》                    Console.Write(
IN FileName:); string inFileName = Console.ReadLine();
《对称加密算法学习(1)》                    Console.Write(
OUT FileName:); string outFileName = Console.ReadLine();
《对称加密算法学习(1)》                    Console.Write(
PassWord:); string password = Console.ReadLine();
《对称加密算法学习(1)》                    Console.Write(
Choice 0:Encrypt  other:Dcrypt:); string Choice = Console.ReadLine();
《对称加密算法学习(1)》
《对称加密算法学习(1)》
《对称加密算法学习(1)》                    
// Create the password key
《对称加密算法学习(1)》
                    byte[] saltValueBytes = Encoding.ASCII.GetBytes(This is my sa1t);
《对称加密算法学习(1)》                    Rfc2898DeriveBytes passwordKey 
= new Rfc2898DeriveBytes(password, saltValueBytes);
《对称加密算法学习(1)》
《对称加密算法学习(1)》                    
// Create the algorithm and specify the key and IV
《对称加密算法学习(1)》
                    RijndaelManaged alg = new RijndaelManaged();
《对称加密算法学习(1)》                    alg.Key 
= passwordKey.GetBytes(alg.KeySize / 8);
《对称加密算法学习(1)》                    alg.IV 
= passwordKey.GetBytes(alg.BlockSize / 8);
《对称加密算法学习(1)》
《对称加密算法学习(1)》
《对称加密算法学习(1)》                    
if (Choice == 0)
《对称加密算法学习(1)》《对称加密算法学习(1)》                    
《对称加密算法学习(1)》{
《对称加密算法学习(1)》
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
encrypt#region encrypt
《对称加密算法学习(1)》                        
// Create the password key
《对称加密算法学习(1)》
                        try
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
《对称加密算法学习(1)》{
《对称加密算法学习(1)》
《对称加密算法学习(1)》                            
// Read the unencrypted file into fileData
《对称加密算法学习(1)》
                            FileStream inFile = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
《对称加密算法学习(1)》                            
byte[] fileData = new byte[inFile.Length];
《对称加密算法学习(1)》                            inFile.Read(fileData, 
0, (int)inFile.Length);
《对称加密算法学习(1)》
《对称加密算法学习(1)》                            
// Create the ICryptoTransform and CryptoStream object 
《对称加密算法学习(1)》
                            ICryptoTransform encryptor = alg.CreateEncryptor();
《对称加密算法学习(1)》                            FileStream outFile 
= new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
《对称加密算法学习(1)》                            CryptoStream encryptStream 
= new CryptoStream(outFile, encryptor, CryptoStreamMode.Write);
《对称加密算法学习(1)》
《对称加密算法学习(1)》                            
// Write the contents to the CryptoStream
《对称加密算法学习(1)》
                            encryptStream.Write(fileData, 0, fileData.Length);
《对称加密算法学习(1)》
《对称加密算法学习(1)》                            
// Close the file handles
《对称加密算法学习(1)》
                            encryptStream.Close();
《对称加密算法学习(1)》                            inFile.Close();
《对称加密算法学习(1)》                            outFile.Close();
《对称加密算法学习(1)》                        }

《对称加密算法学习(1)》                        
catch (Exception ex)
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
《对称加密算法学习(1)》{
《对称加密算法学习(1)》                            Console.WriteLine(ex.Message);
《对称加密算法学习(1)》                            Console.ReadLine();
《对称加密算法学习(1)》                        }

《对称加密算法学习(1)》
《对称加密算法学习(1)》                        
#endregion

《对称加密算法学习(1)》                    }

《对称加密算法学习(1)》                    
else
《对称加密算法学习(1)》《对称加密算法学习(1)》                    
《对称加密算法学习(1)》{
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
dencrypt#region dencrypt
《对称加密算法学习(1)》                        
try
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
《对称加密算法学习(1)》{
《对称加密算法学习(1)》
《对称加密算法学习(1)》                            
// Read the encrypted file into fileData
《对称加密算法学习(1)》
                            ICryptoTransform decryptor = alg.CreateDecryptor();
《对称加密算法学习(1)》                            FileStream inFile 
= new FileStream(inFileName, FileMode.Open, FileAccess.Read);
《对称加密算法学习(1)》                            CryptoStream decryptStream 
= new CryptoStream(inFile, decryptor, CryptoStreamMode.Read);
《对称加密算法学习(1)》                            
byte[] fileData = new byte[inFile.Length];
《对称加密算法学习(1)》                            decryptStream.Read(fileData, 
0, (int)inFile.Length);
《对称加密算法学习(1)》                            
// Write the contents of the unencrypted file
《对称加密算法学习(1)》
                            FileStream outFile = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
《对称加密算法学习(1)》                            outFile.Write(fileData, 
0, fileData.Length);
《对称加密算法学习(1)》                            
// Close the file handles
《对称加密算法学习(1)》
                            decryptStream.Close();
《对称加密算法学习(1)》                            inFile.Close();
《对称加密算法学习(1)》                            outFile.Close();
《对称加密算法学习(1)》                        }

《对称加密算法学习(1)》                        
catch (Exception ex)
《对称加密算法学习(1)》《对称加密算法学习(1)》                        
《对称加密算法学习(1)》{
《对称加密算法学习(1)》                            Console.WriteLine(ex.Message);
《对称加密算法学习(1)》                            Console.ReadLine();
《对称加密算法学习(1)》                        }

《对称加密算法学习(1)》
《对称加密算法学习(1)》                        
#endregion

《对称加密算法学习(1)》                    }

《对称加密算法学习(1)》                }

《对称加密算法学习(1)》            }

《对称加密算法学习(1)》        }

《对称加密算法学习(1)》    }

《对称加密算法学习(1)》}


《对称加密算法学习(1)》

从中不难看出对称加密解密的步骤:

选择要采用的加解密算法的类

创建相应的KEY,IV

创建要读出或写入的文件流

利用SymmetricAlgorithm.CreateEncryptor() CreateDecryptor()方法创建ICryptoTransform对象

利用ICryptoTransform对象和创建的文件流创建CryptoStream对象

写入或读出加解密的文件流

    原文作者:加密算法
    原文地址: https://www.cnblogs.com/forrestsun/articles/577913.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞