DES加密文件
来源:互联网 发布:apache nginx php并发 编辑:程序博客网 时间:2024/05/28 05:18
/// <summary> /// 随机产生密钥 /// </summary> /// <returns></returns> static string GenerateKey() { // Create an instance of Symetric Algorithm. Key and IV is generated automatically. DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create(); // Use the Automatically generated key for Encryption. return ASCIIEncoding.ASCII.GetString(desCrypto.Key); } /// <summary> /// DES加密文件内容(不支持中文) /// </summary> /// <param name="sInputFilename">输入文件名</param> /// <param name="sOutputFilename">输出文件名</param> /// <param name="sKey">加密密钥8位</param> public static void EncryptFileByASCII(string sInputFilename,string sOutputFilename,string sKey) { FileStream fsInput = new FileStream(sInputFilename,FileMode.Open,FileAccess.Read); FileStream fsEncrypted = new FileStream(sOutputFilename,FileMode.Create,FileAccess.Write); DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); ICryptoTransform desencrypt = DES.CreateEncryptor(); CryptoStream cryptostream = new CryptoStream(fsEncrypted,desencrypt,CryptoStreamMode.Write); byte[] bytearrayinput = new byte[fsInput.Length]; fsInput.Read(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length); cryptostream.Close(); fsInput.Close(); fsEncrypted.Close(); } /// <summary> /// DES解密文件(不支持中文) /// </summary> /// <param name="sInputFilename">输入文件名</param> /// <param name="sOutputFilename">输出文件名</param> /// <param name="sKey">解密密钥8位</param> public static void DecryptFileByASCII(string sInputFilename, string sOutputFilename, string sKey) { DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); //A 64 bit key and IV is required for this provider. //Set secret key For DES algorithm. DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //Set initialization vector. DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey); //Create a file stream to read the encrypted file back. FileStream fsread = new FileStream(sInputFilename,FileMode.Open,FileAccess.Read); //Create a DES decryptor from the DES instance. ICryptoTransform desdecrypt = DES.CreateDecryptor(); //Create crypto stream set to read and do a //DES decryption transform on incoming bytes. CryptoStream cryptostreamDecr = new CryptoStream(fsread,desdecrypt,CryptoStreamMode.Read); //Print the contents of the decrypted file. StreamWriter fsDecrypted = new StreamWriter(sOutputFilename); fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd()); fsDecrypted.Flush(); fsDecrypted.Close(); } /// <summary> /// 对文件内容进行DES加密(支持中文) /// </summary> /// <param name="sourceFile">待加密的文件绝对路径</param> /// <param name="destFile">加密后的文件保存的绝对路径</param> /// <param name="sKey">加密密钥8位</param> public static void EncryptFileByUnicode(string sourceFile, string destFile,string sKey) { if (!File.Exists(sourceFile)) { throw new FileNotFoundException("指定的文件路径不存在!", sourceFile); } byte[] btKey = Encoding.Default.GetBytes(sKey); byte[] btIV = Encoding.Default.GetBytes(sKey); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] btFile = File.ReadAllBytes(sourceFile); using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write)) { try { using (CryptoStream cs = new CryptoStream(fs, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write)) { cs.Write(btFile, 0, btFile.Length); cs.FlushFinalBlock(); } } catch { throw; } finally { fs.Close(); } } } /// <summary> /// 对文件内容进行DES加密,加密后覆盖掉原来的文件(支持中文) /// </summary> /// <param name="sourceFile">待加密的文件的绝对路径</param> /// <param name="sKey">加密密钥8位</param> public static void EncryptFileByUnicode(string sourceFile, string sKey) { EncryptFileByUnicode(sourceFile, sourceFile, sKey); } /// <summary> /// 对文件内容进行DES解密(支持中文) /// </summary> /// <param name="sourceFile">待解密的文件绝对路径</param> /// <param name="destFile">解密后的文件保存的绝对路径</param> /// <param name="sKey">解密密钥8位</param> public static void DecryptFileByUnicode(string sourceFile, string destFile, string sKey) { if (!File.Exists(sourceFile)) throw new FileNotFoundException("指定的文件路径不存在!", sourceFile); byte[] btKey = Encoding.Default.GetBytes(sKey); byte[] btIV = Encoding.Default.GetBytes(sKey); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] btFile = File.ReadAllBytes(sourceFile); using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write)) { try { using (CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write)) { cs.Write(btFile, 0, btFile.Length); cs.FlushFinalBlock(); } } catch { throw; } finally { fs.Close(); } } } /// <summary> /// 对文件内容进行DES解密,加密后覆盖掉原来的文件(支持中文) /// </summary> /// <param name="sourceFile">待解密的文件的绝对路径</param> /// <param name="sKey">解密密钥8位</param> public static void DecryptFileByUnicode(string sourceFile, string sKey) { DecryptFileByUnicode(sourceFile, sourceFile, sKey); }
- des加密文件
- 文件DES加密解密
- des文件加密、解密
- DES加密文件
- DES加密解密文件
- des文件加密
- asp 的DES加密文件
- asp 的DES加密文件
- DES加密解密算法文件
- java DES加密解密文件
- java DES加密解密文件
- Java DES文件加密解密
- IOS-plist文件DES加密
- 3DES文件加密程序
- IOS-plist文件DES加密
- DES 文件加密, RSA 给密码加密
- 使用Des,MD5 加密.解密.字符串.文件
- 使用Des,MD5 加密.解密.字符串.文件
- JS窗口层滑动排序【类似于QQ空间的布局】
- 咏春拳的劲
- C#.NET对注册表的常用操作(增加项,判断指定项是否存在,增加键(键的名称,键的数值),判断指定的键是否存在)
- aix unix常用命令
- 网上找到的个有意思的笑话
- DES加密文件
- 马云:创新不是跟对手竞争,而是跟明天竞争
- Windows + Cygwin + NS2
- matlab 不用GUI绘图加入pushbutton
- SQL Server2000递归查询(非常棒)
- SQL Server2000递归查询(非常棒)
- WCF RIA Services - 超时
- 星历表DE405/406 testeph.f汉化兼修改
- 从多方面理解 Android 体系结构