C#加密算法汇总.docx
- 文档编号:7881955
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:14
- 大小:17.47KB
C#加密算法汇总.docx
《C#加密算法汇总.docx》由会员分享,可在线阅读,更多相关《C#加密算法汇总.docx(14页珍藏版)》请在冰豆网上搜索。
C#加密算法汇总
方法一:
//须添加对System.Web的引用
usingSystem.Web.Security;
...
///
///SHA1加密字符串
///
///
///
publicstringSHA1(stringsource)
{
returnFormsAuthentication.HashPasswordForStoringInConfigFile(source,"SHA1");
}
///
///MD5加密字符串
///
///
///
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 { 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; /// ///对称加密类的构造函数 /// publicSymmetricMethod() { mobjCryptoService=newRijndaelManaged(); Key="Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj! y6&(*jkP87jH7"; } /// ///获得密钥 /// /// privatebyte[]GetLegalKey() { stringsTemp=Key; mobjCryptoService.GenerateKey(); byte[]bytTemp=mobjCryptoService.Key; intKeyLength=bytTemp.Length; if(sTemp.Length>KeyLength) sTemp=sTemp.Substring(0,KeyLength); elseif(sTemp.Length sTemp=sTemp.PadRight(KeyLength,''); returnASCIIEncoding.ASCII.GetBytes(sTemp); } /// ///获得初始向量IV /// /// 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 sTemp=sTemp.PadRight(IVLength,''); returnASCIIEncoding.ASCII.GetBytes(sTemp); } /// ///加密方法 /// /// /// 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); } /// ///解密方法 /// /// /// 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}; /// ///DES加密字符串 /// /// /// /// 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; } } /// ///DES解密字符串 /// /// /// /// 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 { 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 { 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; /// ///DES加密方法 /// /// /// /// /// publicstringDESEncrypt(stringstrPlain,stringstrDESKey,stringstrDESIV) { //把密钥转换成字节数组 byte[]bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 加密算法 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)