/ /要确保加密。解密文件的路径都存在的情况下运行。。。
使用系统;
使用System.Collections.Generic;
使用System.Linq的;
使用System.Text命名;
使用的System.Security.Cryptography;
使用System.IO;
命名空间EncryptDemo
{
类节目
{
静态无效的main(String []参数)
{
Console.WriteLine(“请输入需要加密的文件目录:”);
串inFileName = Console.ReadLine();
Console.WriteLine(“加密后文件存放路径:”);
串outFileName = Console.ReadLine();
Console.WriteLine(“请输入密码:”);
串密码= Console.ReadLine();
/ /创建密码钥匙
字节[] saltValueBytes = Encoding.ASCII.GetBytes(“这是我的sa1t”);
Rfc2898DeriveBytes passwordKey =(密码,saltValueBytes)新Rfc2898DeriveBytes;
/ /创建指定的算法和密钥和IV
RijndaelManaged海藻酸钠=新RijndaelManaged();
alg.Key = passwordKey.GetBytes(alg.KeySize / 8);
alg.IV = passwordKey.GetBytes(alg.BlockSize / 8);
/ /读入fileData未加密文件
新的FileStream的FileStream的infile =(inFileName,FileMode.Open,FileAccess.Read);
字节[] fileData =新的字节[inFile.Length];
inFile.Read(fileData,0,(int)的inFile.Length);
/ /创建ICryptoTransform和CryptoStream对象
ICryptoTransform加密器= alg.CreateEncryptor();
=新的FileStream outfile中的FileStream(outFileName,FileMode.OpenOrCreate,FileAccess.Write);
CryptoStream的encryptStream =新CryptoStream的(输出文件,加密器,CryptoStreamMode.Write);
/ /写的内容到CryptoStream的
encryptStream.Write(fileData,0,fileData.Length);
encryptStream.Close();
inFile.Close();
outFile.Close();
Console.WriteLine(“请输入需要解密的文件目录:”);
串inFileName1 = Console.ReadLine();
Console.WriteLine(“解密后文件存放路径:”);
串outFileName1 = Console.ReadLine();
Console.WriteLine(“请输入密码:”);
串密码1 = Console.ReadLine();
ICryptoTransform解密= alg.CreateDecryptor();
FileStream的inFile1 =新的FileStream(inFileName1,FileMode.Open,FileAccess.Read);
CryptoStream的decryptStream =新CryptoStream的(inFile1,解密,CryptoStreamMode.Read);
] fileData1 =新的字节[inFile1.Length]字节[;
decryptStream.Read(fileData1,0,(int)的inFile1.Length);
/ /写文件的内容加密
FileStream的outFile1 =新的FileStream(outFileName1,FileMode.OpenOrCreate,FileAccess.Write);
outFile1.Write(fileData1,0,fileData1.Length);
/ /关闭文件句柄
decryptStream.Close();
inFile1.Close();
outFile1.Close();
Console.Read();
}
}
}