请各位高手指点,有谁实现过对文件夹进行加密。能否给我点建议
我要实现的功能很简单,就是对指定的文件夹进行加密处理。访问时候需要输入密码才能访问。
对c# 了解很少。只懂点简单的。请问各位c# 能否实现这样的功能。菜鸟级别。需要能详细点。
有实现过的能否发个供我学习下([email protected]),谢谢。
我要实现的功能很简单,就是对指定的文件夹进行加密处理。访问时候需要输入密码才能访问。
对c# 了解很少。只懂点简单的。请问各位c# 能否实现这样的功能。菜鸟级别。需要能详细点。
有实现过的能否发个供我学习下([email protected]),谢谢。
解决方案 »
- 请问大家平时是怎样为工具栏添加图标的?用的是哪种方式?
- 跪求高手解答:C#实现HMAC-SHA1-96算法
- c# 设置一个ntfs文件夹 "d:\\AA" 为 指定的组(001(pc001,pc002),002(pc003))只读,代码怎么写?
- Winform 窗体关闭
- 自定义控制的自定义事件不使用时,为何老报错,有什么办法?
- 创建用户控件,怎么将其中的某一控件设为容器,且调用时添加控件不用挡住。
- 谁指点我写一个去除字符串中多余空格的正则表达式啊?
- VS2005 RTM 4200是什么版本?
- C# Winform datagridview DataGridViewCheckBoxColumn问题
- C#中用WebClient怎么下载db或7z后缀的文件?
- WPF 跪求 求解 在线等待? 写成后台代码
- C# 邮件发送,接收乱码问题,知道的人请进~
using System.IO;
using System.Security.Cryptography;
using System.Text;namespace Cts
{
/**//// <summary>
/// Rijndael
/// </summary>
public class Rijndael
{ private RijndaelManaged myRijndael;
public string Key;
public string IV;
/**//// <summary>
/// 对称加密类的构造函数
/// </summary>
public Rijndael(string key)
{
myRijndael = new RijndaelManaged();
Key = key;
IV="67^%*(&(*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
}
/**//// <summary>
/// 对称加密类的构造函数
/// </summary>
public Rijndael(string key, string iv)
{
myRijndael = new RijndaelManaged();
Key = key;
IV = iv;
}
/**//// <summary>
/// 获得密钥
/// </summary>
/// <returns>密钥</returns>
private byte[] GetLegalKey()
{
string sTemp = Key;
myRijndael.GenerateKey();
byte[] bytTemp = myRijndael.Key;
int KeyLength = bytTemp.Length;
if (sTemp.Length > KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length < KeyLength)
sTemp = sTemp.PadRight(KeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/**//// <summary>
/// 获得初始向量IV
/// </summary>
/// <returns>初试向量IV</returns>
private byte[] GetLegalIV()
{
string sTemp = IV;
myRijndael.GenerateIV();
byte[] bytTemp = myRijndael.IV;
int IVLength = bytTemp.Length;
if (sTemp.Length > IVLength)
sTemp = sTemp.Substring(0, IVLength);
else if (sTemp.Length < IVLength)
sTemp = sTemp.PadRight(IVLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/**//// <summary>
/// 加密方法
/// </summary>
/// <param name="Source">待加密的串</param>
/// <returns>经过加密的串</returns>
public string Encrypt(string Source)
{
try
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV();
ICryptoTransform encrypto = myRijndael.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
catch (Exception ex)
{
//throw new Exception("在文件加密的时候出现错误!错误提示: \n" + ex.Message);
throw ex;
}
}
/**//// <summary>
/// 解密方法
/// </summary>
/// <param name="Source">待解密的串</param>
/// <returns>经过解密的串</returns>
public string Decrypt(string Source)
{
try
{
byte[] bytIn = Convert.FromBase64String(Source);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV();
ICryptoTransform encrypto = myRijndael.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
catch (Exception ex)
{
//throw new Exception("解密出现错误!提示:\n \n" + ex.Message);
throw ex;
}
}
/**//// <summary>
/// 加密方法byte[] to byte[]
/// </summary>
/// <param name="Source">待加密的byte数组</param>
/// <returns>经过加密的byte数组</returns>
public byte[] Encrypt(byte[] Source)
{
try
{
byte[] bytIn = Source;
MemoryStream ms = new MemoryStream();
myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV();
ICryptoTransform encrypto = myRijndael.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return bytOut;
}
catch (Exception ex)
{
throw new Exception("在文件加密的时候出现错误!错误提示: \n" + ex.Message);
}
}
/**//// <summary>
/// 解密方法byte[] to byte[]
/// </summary>
/// <param name="Source">待解密的byte数组</param>
/// <returns>经过解密的byte数组</returns>
public byte[] Decrypt(byte[] Source)
{
try
{
byte[] bytIn = Source;
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV();
ICryptoTransform encrypto = myRijndael.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return UTF8Encoding.UTF8.GetBytes(sr.ReadToEnd());
}
catch (Exception ex)
{
throw new Exception("在文件解密的时候出现错误!错误提示: \n" + ex.Message);
}
}
/**//// <summary>
/// 加密方法File to File
/// </summary>
/// <param name="inFileName">待加密文件的路径</param>
/// <param name="outFileName">待加密后文件的输出路径</param>
public void Encrypt(string inFileName, string outFileName)
{
try
{
//byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
//MemoryStream ms = new MemoryStream(); FileStream fin = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0); myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV(); byte[] bin = new byte[100];
long rdlen = 0;
long totlen = fin.Length;
int len; ICryptoTransform encrypto = myRijndael.CreateEncryptor();
CryptoStream cs = new CryptoStream(fout, encrypto, CryptoStreamMode.Write);
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
cs.Write(bin, 0, len);
rdlen = rdlen + len;
}
cs.Close();
fout.Close();
fin.Close(); }
catch (Exception ex)
{
throw new Exception("在文件加密的时候出现错误!错误提示: \n" + ex.Message);
}
}
/**//// <summary>
/// 解密方法File to File
/// </summary>
/// <param name="inFileName">待解密文件的路径</param>
/// <param name="outFileName">待解密后文件的输出路径</param>
public void Decrypt(string inFileName, string outFileName)
{
try
{
FileStream fin = new FileStream(inFileName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outFileName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0); byte[] bin = new byte[100];
long rdlen = 0;
long totlen = fin.Length;
int len;
myRijndael.Key = GetLegalKey();
myRijndael.IV = GetLegalIV();
ICryptoTransform encrypto = myRijndael.CreateDecryptor();
CryptoStream cs = new CryptoStream(fout, encrypto, CryptoStreamMode.Write);
while (rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
cs.Write(bin, 0, len);
rdlen = rdlen + len;
}
cs.Close();
fout.Close();
fin.Close(); }
catch (Exception ex)
{
throw new Exception("在文件解密的时候出现错误!错误提示: \n" + ex.Message);
}
} }
}