110,534
社区成员
发帖
与我相关
我的任务
分享
class DESCrypt
{
private string Key = "12345678";
public void Encrypt( string FileName )
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = ASCIIEncoding.Default.GetBytes( Key );
des.IV = ASCIIEncoding.Default.GetBytes( Key );
FileStream InputFileStream = File.OpenRead( FileName );
byte[] FileStreamArray = new byte[InputFileStream.Length];
InputFileStream.Read( FileStreamArray , 0 , FileStreamArray.Length );
InputFileStream.Close();
MemoryStream ms = new MemoryStream();
CryptoStream FileCryptoStream = new CryptoStream( ms , des.CreateEncryptor() , CryptoStreamMode.Write );
FileCryptoStream.Write( FileStreamArray , 0 , FileStreamArray.Length );
FileCryptoStream.Close();
InputFileStream = File.OpenWrite( FileName );
foreach( byte b in ms.ToArray() )
{
InputFileStream.WriteByte( b );
}
ms.Close();
InputFileStream.Close();
}
public void Decrypt( string FileName )
{
//生成Provider并设置钥匙
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = ASCIIEncoding.Default.GetBytes( Key );
des.IV = ASCIIEncoding.Default.GetBytes( Key );
//读取已加密数据
StreamReader reader = new StreamReader( FileName );
byte[] FileStreamArray = new byte[reader.BaseStream.Length];
reader.BaseStream.Read( FileStreamArray , 0 , FileStreamArray.Length );
reader.Close();
//生成解密流
MemoryStream ms = new MemoryStream( FileStreamArray );
CryptoStream FileCryptoStream = new CryptoStream( ms , des.CreateDecryptor() , CryptoStreamMode.Read );
//读取解密了的数据,并写入原来的文件
BinaryReader br = new BinaryReader( FileCryptoStream );
FileStreamArray = new byte[1000];
BinaryWriter bw = new BinaryWriter( new StreamWriter( FileName ).BaseStream );
int iReadLength;//读取了多长
while( ( iReadLength = br.Read( FileStreamArray , 0 , 1000 ) ) > 0 )
{
bw.Write( FileStreamArray , 0 , iReadLength );
}
//关闭
bw.Close();
FileCryptoStream.Close();
ms.Close();
}
}
public string Encrypt(string stringToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(stringToEncrypt);
des.Key = ASCIIEncoding.UTF8.GetBytes(sKey);
des.IV = ASCIIEncoding.UTF8.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
public string Decrypt(string stringToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[stringToDecrypt.Length / 2];
for (int x = 0; x < stringToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(stringToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.UTF8.GetBytes(sKey);
des.IV = ASCIIEncoding.UTF8.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
namespace Common
...{
/**//// <summary>
/// DESEncrypt加密解密算法。
/// </summary>
public sealed class DESEncrypt
...{
private DESEncrypt()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
private static string key = "zhoufoxcn";
/**//// <summary>
/// 对称加密解密的密钥
/// </summary>
public static string Key
...{
get
...{
return key;
}
set
...{
key = value;
}
}
/**//// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString"></param>
/// <returns></returns>
public static string DesEncrypt(string encryptString)
...{
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] keyIV = keyBytes;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
/**//// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString"></param>
/// <returns></returns>
public static string DesDecrypt(string decryptString)
...{
byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8));
byte[] keyIV = keyBytes;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
}
}