C#文件加密方法汇总
本文实例汇总了C#文件加密方法。分享给大家供大家参考。具体实现方法如下:
1、AES加密类
usingSystem; usingSystem.IO; usingSystem.Security.Cryptography; usingSystem.Text;
namespaceUtils { ///<summary> ///AES加密解密 ///</summary> publicclassAES { #region加密 #region加密字符串 ///<summary> ///AES加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是Rijndael算法) ///</summary> ///<paramname="EncryptString">待加密密文</param> ///<paramname="EncryptKey">加密密钥</param> publicstaticstringAESEncrypt(stringEncryptString,stringEncryptKey) { returnConvert.ToBase64String(AESEncrypt(Encoding.Default.GetBytes(EncryptString),EncryptKey)); } #endregion
#region加密字节数组 ///<summary> ///AES加密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是Rijndael算法) ///</summary> ///<paramname="EncryptString">待加密密文</param> ///<paramname="EncryptKey">加密密钥</param> publicstaticbyte[]AESEncrypt(byte[]EncryptByte,stringEncryptKey) { if(EncryptByte.Length==0){throw(newException("明文不得为空"));} if(string.IsNullOrEmpty(EncryptKey)){throw(newException("密钥不得为空"));} byte[]m_strEncrypt; byte[]m_btIV=Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ=="); byte[]m_salt=Convert.FromBase64String("gsf4jvkyhye5/d7k8OrLgM=="); Rijndaelm_AESProvider=Rijndael.Create(); try { MemoryStreamm_stream=newMemoryStream(); PasswordDeriveBytespdb=newPasswordDeriveBytes(EncryptKey,m_salt); ICryptoTransformtransform=m_AESProvider.CreateEncryptor(pdb.GetBytes(32),m_btIV); CryptoStreamm_csstream=newCryptoStream(m_stream,transform,CryptoStreamMode.Write); m_csstream.Write(EncryptByte,0,EncryptByte.Length); m_csstream.FlushFinalBlock(); m_strEncrypt=m_stream.ToArray(); m_stream.Close();m_stream.Dispose(); m_csstream.Close();m_csstream.Dispose(); } catch(IOExceptionex){throwex;} catch(CryptographicExceptionex){throwex;} catch(ArgumentExceptionex){throwex;} catch(Exceptionex){throwex;} finally{m_AESProvider.Clear();} returnm_strEncrypt; } #endregion #endregion
#region解密 #region解密字符串 ///<summary> ///AES解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是Rijndael算法) ///</summary> ///<paramname="DecryptString">待解密密文</param> ///<paramname="DecryptKey">解密密钥</param> publicstaticstringAESDecrypt(stringDecryptString,stringDecryptKey) { returnConvert.ToBase64String(AESDecrypt(Encoding.Default.GetBytes(DecryptString),DecryptKey)); } #endregion
#region解密字节数组 ///<summary> ///AES解密(高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是Rijndael算法) ///</summary> ///<paramname="DecryptString">待解密密文</param> ///<paramname="DecryptKey">解密密钥</param> publicstaticbyte[]AESDecrypt(byte[]DecryptByte,stringDecryptKey) { if(DecryptByte.Length==0){throw(newException("密文不得为空"));} if(string.IsNullOrEmpty(DecryptKey)){throw(newException("密钥不得为空"));} byte[]m_strDecrypt; byte[]m_btIV=Convert.FromBase64String("Rkb4jvUy/ye7Cd7k89QQgQ=="); byte[]m_salt=Convert.FromBase64String("gsf4jvkyhye5/d7k8OrLgM=="); Rijndaelm_AESProvider=Rijndael.Create(); try { MemoryStreamm_stream=newMemoryStream(); PasswordDeriveBytespdb=newPasswordDeriveBytes(DecryptKey,m_salt); ICryptoTransformtransform=m_AESProvider.CreateDecryptor(pdb.GetBytes(32),m_btIV); CryptoStreamm_csstream=newCryptoStream(m_stream,transform,CryptoStreamMode.Write); m_csstream.Write(DecryptByte,0,DecryptByte.Length); m_csstream.FlushFinalBlock(); m_strDecrypt=m_stream.ToArray(); m_stream.Close();m_stream.Dispose(); m_csstream.Close();m_csstream.Dispose(); } catch(IOExceptionex){throwex;} catch(CryptographicExceptionex){throwex;} catch(ArgumentExceptionex){throwex;} catch(Exceptionex){throwex;} finally{m_AESProvider.Clear();} returnm_strDecrypt; } #endregion #endregion
} }