Csharp/C#教程:C#加密算法汇总(推荐)分享

方法一:
代码如下:
//须添加对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)!

www.ctvol.com true Article Csharp/C#教程:C#加密算法汇总(推荐)分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/904921.html

(0)
上一篇 2021年10月22日 上午6:36
下一篇 2021年10月22日 上午6:37

精彩推荐