//名称空间
using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

//方法
//加密方法
public string Encrypt(string pToEncrypt, string sKey)


{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
//原来使用的UTF8编码,我改成Unicode编码了,不行
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);

//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach(byte b in ms.ToArray())

{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}

//解密方法
public string Decrypt(string pToDecrypt, string sKey)


{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

//Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)

{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}

//建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();

//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}

来源:http://blog.csdn.net/keyu23/archive/2005/09/27/490577.aspx
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web;
namespace Test.Com


{

/**//// <summary>
/// DESEncryptor 的摘要说明。
/// </summary>
public class DESEncryptor


{

私有成员#region 私有成员

/**//// <summary>
/// 输入字符串
/// </summary>
private string inputString=null;

/**//// <summary>
/// 输出字符串
/// </summary>
private string outString=null;

/**//// <summary>
/// 输入文件路径
/// </summary>
private string inputFilePath=null;

/**//// <summary>
/// 输出文件路径
/// </summary>

中国3S吧 3s8.cn


private string outFilePath=null;

/**//// <summary>
/// 加密密钥
/// </summary>
private string encryptKey=null;

/**//// <summary>
/// 解密密钥
/// </summary>
private string decryptKey=null;

/**//// <summary>
/// 提示信息
/// </summary>
private string noteMessage=null;
#endregion

公共属性#region 公共属性

/**//// <summary>
/// 输入字符串
/// </summary>
public string InputString


{

get
{return inputString;}

set
{inputString=value;}
}

/**//// <summary>
/// 输出字符串
/// </summary>
public string OutString


{

get
{return outString;}

set
{outString=value;}
}

/**//// <summary>
/// 输入文件路径
/// </summary>
public string InputFilePath


{

get
{return inputFilePath;}

set
{inputFilePath=value;}
}

/**//// <summary>
/// 输出文件路径
/// </summary>
中国3S吧 3s8.cn


public string OutFilePath


{

get
{return outFilePath;}

set
{outFilePath=value;}
}

/**//// <summary>
/// 加密密钥
/// </summary>
public string EncryptKey


{

get
{return encryptKey;}

set
{encryptKey=value;}
}

/**//// <summary>
/// 解密密钥
/// </summary>
public string DecryptKey


{

get
{return decryptKey;}

set
{decryptKey=value;}
}

/**//// <summary>
/// 错误信息
/// </summary>
public string NoteMessage


{

get
{return noteMessage;}

set
{noteMessage=value;}
}
#endregion

构造函数#region 构造函数
public DESEncryptor()


{
//
// TODO: 在此处添加构造函数逻辑
//
}
#endregion

DES加密字符串#region DES加密字符串

/**//// <summary>
/// 加密字符串
/// 注意:密钥必须为8位
/// </summary>
/// <param name="strText">字符串</param>
/// <param name="encryptKey">密钥</param>
中国3S吧 3s8.cn

public void DesEncrypt()


{
byte[] byKey=null;

byte[] IV=
{0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
try


{
byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0,8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.UTF8.GetBytes(this.inputString);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
this.outString=Convert.ToBase64String(ms.ToArray());
}
catch(System.Exception error)


{
this.noteMessage=error.Message;
}
}
#endregion

DES解密字符串#region DES解密字符串

/**//// <summary>
/// 解密字符串
/// </summary>
/// <param name="this.inputString">加了密的字符串</param>
/// <param name="decryptKey">密钥</param>
public void DesDecrypt()


{
byte[] byKey = null;

byte[] IV=
{0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
byte[] inputByteArray = new Byte[this.inputString.Length];
try


{
byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0,8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(this.inputString);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = new System.Text.UTF8Encoding();
this.outString=encoding.GetString(ms.ToArray());
}
catch(System.Exception error)


{
this.noteMessage=error.Message;
}
}
#endregion

DES加密文件#region DES加密文件

/**//// <summary>
/// DES加密文件
/// </summary>
/// <param name="this.inputFilePath">源文件路径</param>



/// <param name="this.outFilePath">输出文件路径</param>
/// <param name="encryptKey">密钥</param>
public void FileDesEncrypt()


{
byte[] byKey=null;

byte[] IV=
{0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
try


{
byKey = System.Text.Encoding.UTF8.GetBytes(this.encryptKey.Substring(0,8));
FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
//Create variables to help with read and write.
byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
long rdlen = 0; //This is the total number of bytes written.
long totlen = fin.Length; //This is the total length of the input file.
int len; //This is the number of bytes to be written at a time.
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);



//Read from the input file, then encrypt and write to the output file.
while(rdlen < totlen)


{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}

中国3S吧 3s8.cn

encStream.Close();
fout.Close();
fin.Close(); 中国3S吧 3s8.cn


}
catch(System.Exception error)


{
this.noteMessage=error.Message.ToString();




}
}
#endregion

DES解密文件#region DES解密文件

/**//// <summary>
/// 解密文件
/// </summary>
/// <param name="this.inputFilePath">加密了的文件路径</param>
/// <param name="this.outFilePath">输出文件路径</param>
/// <param name="decryptKey">密钥</param>
public void FileDesDecrypt()


{
byte[] byKey = null;

byte[] IV=
{0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
try


{
byKey = System.Text.Encoding.UTF8.GetBytes(decryptKey.Substring(0,8));
FileStream fin = new FileStream(this.inputFilePath, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(this.outFilePath, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
//Create variables to help with read and write.
byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
long rdlen = 0; //This is the total number of bytes written.
long totlen = fin.Length; //This is the total length of the input file.
int len; //This is the number of bytes to be written at a time.
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);


//Read from the input file, then encrypt and write to the output file.
while(rdlen < totlen)


{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
} 中国3S吧 3s8.cn

encStream.Close();
fout.Close();
fin.Close();
}
catch(System.Exception error)


{
this.noteMessage=error.Message.ToString();
}
}
#endregion

MD5#region MD5

/**//// <summary>
/// MD5 Encrypt
/// </summary>
/// <param name="strText">text</param>
/// <returns>md5 Encrypt string</returns>
public void MD5Encrypt()


{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(this.inputString));
this.outString=System.Text.Encoding.Default.GetString(result);
}
#endregion




}
}


来源:
http://www.3s8.cn/develop/c1/200611/324.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述