⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filecryptography.cs

📁 数据加密用C#做的加密程序,望各位多提问题
💻 CS
字号:
using System; 
using System.Security.Cryptography; 
using System.Text; 
using System.IO; 
using System.Windows.Forms ; 

namespace DataCryptography
{ 
	/// <summary> 
	///加密
	/// </summary> 
	public class FileCryptography 
	{ 
		public FileCryptography() 
		{ 
		} 
		/// <summary> 
		/// 加密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了)
		/// </summary> 
		/// <param name="strText">待加密文本</param> 
		/// <param name="strEncrKey">key</param> 
		/// <returns></returns> 
		public string DesEncrypt(string strText, string strEncrKey) 
		{ 
			byte[] byKey=null; 
			byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
			try 
			{ 
				byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
				DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
				byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); 
				MemoryStream ms = new MemoryStream(); 
				CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ; 
				cs.Write(inputByteArray, 0, inputByteArray.Length); 
				cs.FlushFinalBlock(); 
				return Convert.ToBase64String(ms.ToArray()); 
			} 
			catch(System.Exception error) 
			{ 				
				return "error:" +error.Message+"\r"; 
			} 
		} 
		/// <summary> 
		/// 解密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
		/// </summary> 
		/// <param name="strText">解密的字符串</param> 
		/// <param name="sDecrKey">key</param> 
		/// <returns>输出字符串</returns> 
		public string DesDecrypt(string strText,string sDecrKey) 
		{ 
			byte[] byKey = null; 
			byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
			byte[] inputByteArray = new Byte[strText.Length]; 
			try 
			{ 
				byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
				DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
				inputByteArray = Convert.FromBase64String(strText); 
				MemoryStream ms = new MemoryStream(); 
				CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 
				cs.Write(inputByteArray, 0, inputByteArray.Length); 
				cs.FlushFinalBlock(); 
				System.Text.Encoding encoding = new System.Text.UTF8Encoding(); 
				return encoding.GetString(ms.ToArray()); 
			} 
			catch(System.Exception error) 
			{ 				
				return "error:"+error.Message+"\r"; 
			} 
		} 
		/// <summary> 
		/// 加密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
		/// </summary> 
		/// <param name="m_InFilePath">加密文件路径</param> 
		/// <param name="m_OutFilePath">输出路径</param> 
		/// <param name="strEncrKey">key</param> 
		public void DesEncrypt(string m_InFilePath,string m_OutFilePath,string strEncrKey) 
		{ 
			byte[] byKey=null; 
			byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
			try 
			{ 
				byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
				FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
				FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
				fout.SetLength(0); 
				//Create variables to help with read and write. 
				byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
				long rdlen = 0; //This is the total number of bytes written. 
				long totlen = fin.Length; //This is the total length of the input file. 
				int len; //This is the number of bytes to be written at a time. 

				DES des = new DESCryptoServiceProvider(); 
				CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write); 

				//Read from the input file, then encrypt and write to the output file. 
				while(rdlen < totlen) 
				{ 
					len = fin.Read(bin, 0, 100); 
					encStream.Write(bin, 0, len); 
					rdlen = rdlen + len; 
				} 

				encStream.Close(); 
				fout.Close(); 
				fin.Close(); 
			} 
			catch(System.Exception error) 
			{ 
				MessageBox.Show(error.Message.ToString()); 
			} 
		} 
		/// <summary> 
		/// 解密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
		/// </summary> 
		/// <param name="m_InFilePath">解密文件路径</param> 
		/// <param name="m_OutFilePath">输出路径</param> 
		/// <param name="sDecrKey">key</param> 
		public void DesDecrypt(string m_InFilePath,string m_OutFilePath,string sDecrKey) 
		{ 
			byte[] byKey = null; 
			byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
			try 
			{ 
				byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
				FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
				FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
				fout.SetLength(0); 
				//Create variables to help with read and write. 
				byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
				long rdlen = 0; //This is the total number of bytes written. 
				long totlen = fin.Length; //This is the total length of the input file. 
				int len; //This is the number of bytes to be written at a time. 

				DES des = new DESCryptoServiceProvider(); 
				CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 

				//Read from the input file, then encrypt and write to the output file. 
				while(rdlen < totlen) 
				{ 
					len = fin.Read(bin, 0, 100); 
					encStream.Write(bin, 0, len); 
					rdlen = rdlen + len; 
				} 
				encStream.Close(); 
				fout.Close(); 
				fin.Close(); 
			} 
			catch(System.Exception error) 
			{ 
				MessageBox.Show( "error:"+error.Message); 
			} 
		} 
		/// <summary> 
		/// MD5加密
		/// </summary> 
		/// <param name="strText">待加密文本</param> 
		/// <returns>加密后的结果</returns> 
		public string MD5Encrypt(string strText) 
		{ 
			MD5 md5 = new MD5CryptoServiceProvider(); 
			byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strText)); 
			return System.Text.Encoding.Default.GetString(result); 
		} 
	} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -