方法一:
代码如下:
//须添加对System.Web的引用
usingSystem.Web.Security;
…
///<summary>
///SHA1加密字符串
///</summary>
///<paramname=”source”>源字符串</param>
///<returns>加密后的字符串</returns>
publicstringSHA1(stringsource)
{
returnFormsAuthentication.HashPasswordForStoringInConfigFile(source,”SHA1″);
}
///<summary>
///MD5加密字符串
///</summary>
///<paramname=”source”>源字符串</param>
///<returns>加密后的字符串</returns>
publicstringMD5(stringsource)
{
returnFormsAuthentication.HashPasswordForStoringInConfigFile(source,”MD5″);;
}
方法二(可逆加密解密):
代码如下:
usingSystem.Security.Cryptography;
…
publicstringEncode(stringdata)
{
byte[]byKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[]byIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvidercryptoProvider=newDESCryptoServiceProvider();
inti=cryptoProvider.KeySize;
MemoryStreamms=newMemoryStream();
CryptoStreamcst=newCryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
StreamWritersw=newStreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
returnConvert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);
}
publicstringDecode(stringdata)
{
byte[]byKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[]byIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[]byEnc;
try
{
byEnc=Convert.FromBase64String(data);
}
catch
{
returnnull;
}
DESCryptoServiceProvidercryptoProvider=newDESCryptoServiceProvider();
MemoryStreamms=newMemoryStream(byEnc);
CryptoStreamcst=newCryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read);
StreamReadersr=newStreamReader(cst);
returnsr.ReadToEnd();
}
方法三(MD5不可逆):
代码如下:
usingSystem.Security.Cryptography;
…
//MD5不可逆加密
//32位加密
publicstringGetMD5_32(strings,string_input_charset)
{
MD5md5=newMD5CryptoServiceProvider();
byte[]t=md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
StringBuildersb=newStringBuilder(32);
for(inti=0;i<t.Length;i++)
{
sb.Append(t[i].ToString(“x”).PadLeft(2,’0′));
}
returnsb.ToString();
}
//16位加密
publicstaticstringGetMd5_16(stringConvertString)
{
MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();
stringt2=BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)),4,8);
t2=t2.Replace(“-“,””);
returnt2;
}
方法四(对称加密):
代码如下:
usingSystem.IO;
usingSystem.Security.Cryptography;
…
privateSymmetricAlgorithmmobjCryptoService;
privatestringKey;
///<summary>
///对称加密类的构造函数
///</summary>
publicSymmetricMethod()
{
mobjCryptoService=newRijndaelManaged();
Key=”Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7″;
}
///<summary>
///获得密钥
///</summary>
///<returns>密钥</returns>
privatebyte[]GetLegalKey()
{
stringsTemp=Key;
mobjCryptoService.G enerateKey();
byte[]bytTemp=mobjCryptoService.Key;
intKeyLength=bytTemp.Length;
if(sTemp.Length>KeyLength)
sTemp=sTemp.Substring(0,KeyLength);
elseif(sTemp.Length<KeyLength)
sTemp=sTemp.PadRight(KeyLength,”);
returnASCIIEncoding.ASCII.GetBytes(sTemp);
}
///<summary>
///获得初始向量IV
///</summary>
///<returns>初试向量IV</returns>
privatebyte[]GetLegalIV()
{
stringsTemp=”E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk”;
mobjCryptoService.GenerateIV();
byte[]bytTemp=mobjCryptoService.IV;
intIVLength=bytTemp.Length;
if(sTemp.Length>IVLength)
sTemp=sTemp.Substring(0,IVLength);
elseif(sTemp.Length<IVLength)
sTemp=sTemp.PadRight(IVLength,”);
returnASCIIEncoding.ASCII.GetBytes(sTemp);
}
///<summary>
///加密方法
///</summary>
///<paramname=”Source”>待加密的串</param>
///<returns>经过加密的串</returns>
publicstringEncrypto(stringSource)
{
byte[]bytIn=UTF8Encoding.UTF8.GetBytes(Source);
MemoryStreamms=newMemoryStream();
mobjCryptoService.Key=GetLegalKey();
mobjCryptoService.IV=GetLegalIV();
ICryptoTransformencrypto=mobjCryptoService.CreateEncryptor();
CryptoStreamcs=newCryptoStream(ms,encrypto,CryptoStreamMode.Write);
cs.Write(bytIn,0,bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[]bytOut=ms.ToArray();
returnConvert.ToBase64String(bytOut);
}
///<summary>
///解密方法
///</summary>
///<paramname=”Source”>待解密的串</param>
///<returns>经过解密的串</returns>
publicstringDecrypto(stringSource)
{
byte[]bytIn=Convert.FromBase64String(Source);
MemoryStreamms=newMemoryStream(bytIn,0,bytIn.Length);
mobjCryptoService.Key=GetLegalKey();
mobjCryptoService.IV=GetLegalIV();
ICryptoTransformencrypto=mobjCryptoService.CreateDecryptor();
CryptoStreamcs=newCryptoStream(ms,encrypto,CryptoStreamMode.Read);
StreamReadersr=newStreamReader(cs);
returnsr.ReadToEnd();
}
方法五:
代码如下:
usingSystem.IO;
usingSystem.Security.Cryptography;
usingSystem.Text;
…
//默认密钥向量
privatestaticbyte[]Keys={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
///<summary>
///DES加密字符串
///</summary>
///<paramname=”encryptString”>待加密的字符串</param>
///<paramname=”encryptKey”>加密密钥,要求为8位</param>
///<returns>加密成功返回加密后的字符串,失败返回源串</returns>
publicstaticstringEncryptDES(stringencryptString,stringencryptKey)
{
try
{
byte[]rgbKey=Encoding.UTF8.GetBytes(encryptKey.Substring(0,8));
byte[]rgbIV=Keys;
byte[]inputByteArray=Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProviderdCSP=newDESCryptoServiceProvider();
MemoryStreammStream=newMemoryStream();
CryptoStreamcStream=newCryptoStream(mStream,dCSP.CreateEncryptor(rgbKey,rgbIV),CryptoStreamMode.Write);
cStream.Write(inputByteArray,0,inputByteArray.Length);
cStream.FlushFinalBlock();
returnConvert.ToBase64String(mStream.ToArray());
}
catch
{
returnencryptString;
}
}
///<summary>
///DES解密字符串
///</summary>
///<paramname=”decryptString”>待解密的字符串</param>
///<paramname=”decryptKey”& gt;解密密钥,要求为8位,和加密密钥相同</param>
///<returns>解密成功返回解密后的字符串,失败返源串</returns>
publicstaticstringDecryptDES(stringdecryptString,stringdecryptKey)
{
try
{
byte[]rgbKey=Encoding.UTF8.GetBytes(decryptKey);
byte[]rgbIV=Keys;
byte[]inputByteArray=Convert.FromBase64String(decryptString);
DESCryptoServiceProviderDCSP=newDESCryptoServiceProvider();
MemoryStreammStream=newMemoryStream();
CryptoStreamcStream=newCryptoStream(mStream,DCSP.CreateDecryptor(rgbKey,rgbIV),CryptoStreamMode.Write);
cStream.Write(inputByteArray,0,inputByteArray.Length);
cStream.FlushFinalBlock();
returnEncoding.UTF8.GetString(mStream.ToArray());
}
catch
{
returndecryptString;
}
}
方法六(文件加密):
代码如下:
usingSystem.IO;
usingSystem.Security.Cryptography;
usingSystem.Text;
…
//加密文件
privatestaticvoidEncryptData(StringinName,StringoutName,byte[]desKey,byte[]desIV)
{
//Createthefilestreamstohandletheinputandoutputfiles.
FileStreamfin=newFileStream(inName,FileMode.Open,FileAccess.Read);
FileStreamfout=newFileStream(outName,FileMode.OpenOrCreate,FileAccess.Write);
fout.SetLength(0);
//Createvariablestohelpwithreadandwrite.
byte[]bin=newbyte[100];//Thisisintermediatestoragefortheencryption.
longrdlen=0; //Thisisthetotalnumberofbyteswritten.
longtotlen=fin.Length; //Thisisthetotallengthoftheinputfile.
intlen; //Thisisthenumberofbytestobewrittenatatime.
DESdes=newDESCryptoServiceProvider();
CryptoStreamencStream=newCryptoStream(fout,des.CreateEncryptor(desKey,desIV),CryptoStreamMode.Write);
//Readfromtheinputfile,thenencryptandwritetotheoutputfile.
while(rdlen<totlen)
{
len=fin.Read(bin,0,100);
encStream.Write(bin,0,len);
rdlen=rdlen+len;
}
encStream.Close();
fout.Close();
fin.Close();
}
//解密文件
privatestaticvoidDecryptData(StringinName,StringoutName,byte[]desKey,byte[]desIV)
{
//Createthefilestreamstohandletheinputandoutputfiles.
FileStreamfin=newFileStream(inName,FileMode.Open,FileAccess.Read);
FileStreamfout=newFileStream(outName,FileMode.OpenOrCreate,FileAccess.Write);
fout.SetLength(0);
//Createvariablestohelpwithreadandwrite.
byte[]bin=newbyte[100];//Thisisintermediatestoragefortheencryption.
longrdlen=0; //Thisisthetotalnumberofbyteswritten.
longtotlen=fin.Length; //Thisisthetotallengthoftheinputfile.
intlen; //Thisisthenumberofbytestobewrittenatatime.
DESdes=newDESCryptoServiceProvider();
CryptoStreamencStream=newCryptoStream(fout,des.CreateDecryptor(desKey,desIV),CryptoStreamMode.Write);
//Readfromtheinputfile,thenencryptandwritetotheoutputfile.
while(rdlen<totlen)
{
len=fin.Read(bin,0,100);
encStream.Write(bin,0,len);
rdlen=rdlen+len;
}
encStream.Close();
fout.Close();
fin.Close();
}
代码如下:
usingSystem;
usingSystem.Security.Cryptography;//这个是处理文字编码的前提
usingSystem.Text;
usingSystem.IO;
///<summary>
///DES加密方法
///</summary>
///<paramname=”strPlain”>明文</param>
///<paramname=”strDESKey”>密钥</param>
///<paramname=”strDESIV”>向量</param>
///<returns>密文</returns>
publicstringDESEncrypt(stringstrPlain,stringstrDESKey,stringstrDESIV)
{
//把密钥转换成字节数组
byte[]bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
//把向量转换成字节数组
byte[]bytesDESIV=ASC IIEncoding.ASCII.GetBytes(strDESIV);
//声明1个新的DES对象
DESCryptoServiceProviderdesEncrypt=newDESCryptoServiceProvider();
//开辟一块内存流
MemoryStreammsEncrypt=newMemoryStream();
//把内存流对象包装成加密流对象
CryptoStreamcsEncrypt=newCryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write);
//把加密流对象包装成写入流对象
StreamWriterswEncrypt=newStreamWriter(csEncrypt);
//写入流对象写入明文
swEncrypt.WriteLine(strPlain);
//写入流关闭
swEncrypt.Close();
//加密流关闭
csEncrypt.Close();
//把内存流转换成字节数组,内存流现在已经是密文了
byte[]bytesCipher=msEncrypt.ToArray();
//内存流关闭
msEncrypt.Close();
//把密文字节数组转换为字符串,并返回
returnUnicodeEncoding.Unicode.GetString(bytesCipher);
}
///<summary>
///DES解密方法
///</summary>
///<paramname=”strCipher”>密文</param>
///<paramname=”strDESKey”>密钥</param>
///<paramname=”strDESIV”>向量</param>
///<returns>明文</returns>
publicstringDESDecrypt(stringstrCipher,stringstrDESKey,stringstrDESIV)
{
//把密钥转换成字节数组
byte[]bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
//把向量转换成字节数组
byte[]bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
//把密文转换成字节数组
byte[]bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);
//声明1个新的DES对象
DESCryptoServiceProviderdesDecrypt=newDESCryptoServiceProvider();
//开辟一块内存流,并存放密文字节数组
MemoryStreammsDecrypt=newMemoryStream(bytesCipher);
//把内存流对象包装成解密流对象
CryptoStreamcsDecrypt=newCryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read);
//把解密流对象包装成读出流对象
StreamReadersrDecrypt=newStreamReader(csDecrypt);
//明文=读出流的读出内容
stringstrPlainText=srDecrypt.ReadLine();
//读出流关闭
srDecrypt.Close();
//解密流关闭
csDecrypt.Close();
//内存流关闭
msDecrypt.Close();
//返回明文
returnstrPlainText;
}
您可能感兴趣的文章:C#自定义RSA加密解密及RSA签名和验证类实例基于私钥加密公钥解密的RSA算法C#实现方法c#rsa注册实现加密文字jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】同时兼容JS和C#的RSA加密解密算法详解(对web提交的数据加密传输)C#的3DES加密解密算法实例代码c#实现MD5,SHA1,SHA256,SHA512等常用加密算法源代码C#DES加密算法中向量的作用详细解析C#实现简单的RSA非对称加密算法示例
使用C++制作简单的web服务器
使用VC++实现打印乘法口诀表
上述就是C#学习教程:C#加密算法汇总(推荐)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/904921.html