1、C#加密解密总结【转】C#加密解密总结 ASCIIEncoding.ASCII.GetBytes(sKey); 这里的sKey必须是8位英文字母。/须添加对System.Web的引用usingSystem.Web.Security;./SHA1加密字符串/源字符串/加密后的字符串publicstringSHA1(stringsource)returnFormsAuthentication.HashPasswordForStoringInConfigFile(source,SHA1);/MD5加密字符串/源字符串/加密后的字符串publicstringMD5(stringsource)retur
2、nFormsAuthentication.HashPasswordForStoringInConfigFile(source,MD5);方法二(可逆加密解密):usingSystem.Security.Cryptography;.publicstringEncode(stringdata)bytebyKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);bytebyIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);DESCryptoServiceProvidercryptoProvider=
3、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();returnConver
4、t.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);publicstringDecode(stringdata)bytebyKey=System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);bytebyIV=System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);bytebyEnc;trybyEnc=Convert.FromBase64String(data);catchreturnnull;DESCryptoServiceProvidercryptoProvider
5、=newDESCryptoServiceProvider();MemoryStreamms=newMemoryStream(byEnc);CryptoStreamcst=newCryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read);StreamReadersr=newStreamReader(cst);returnsr.ReadToEnd();方法三(MD5不可逆):usingSystem.Security.Cryptography;./MD5不可逆加密/32位加密publicstrin
6、gGetMD5_32(strings,string_input_charset)MD5md5=newMD5CryptoServiceProvider();bytet=md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s);StringBuildersb=newStringBuilder(32);for(inti=0;it.Length;i+)sb.Append(ti.ToString(x).PadLeft(2,0);returnsb.ToString();/16位加密publicstaticstringGetMd5_16
7、(stringConvertString)MD5CryptoServiceProvidermd5=newMD5CryptoServiceProvider();stringt2=BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString),4,8);t2=t2.Replace(-,);returnt2;方法四(对称加密):usingSystem.IO;usingSystem.Security.Cryptography;.privateSymmetricAlgorithmmobjCryptoSe
8、rvice;privatestringKey;/对称加密类的构造函数/publicSymmetricMethod()mobjCryptoService=newRijndaelManaged();Key=Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7;/获得密钥/密钥privatebyteGetLegalKey()stringsTemp=Key;mobjCryptoService.GenerateKey();bytebytTemp=mobjCryptoService.Key;intKeyLength=bytTemp
9、.Length;if(sTemp.LengthKeyLength)sTemp=sTemp.Substring(0,KeyLength);elseif(sTemp.LengthKeyLength)sTemp=sTemp.PadRight(KeyLength,);returnASCIIEncoding.ASCII.GetBytes(sTemp);/获得初始向量IV/初试向量IVprivatebyteGetLegalIV()stringsTemp=E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk;mobjCryptoSe
10、rvice.GenerateIV();bytebytTemp=mobjCryptoService.IV;intIVLength=bytTemp.Length;if(sTemp.LengthIVLength)sTemp=sTemp.Substring(0,IVLength);elseif(sTemp.LengthIVLength)sTemp=sTemp.PadRight(IVLength,);returnASCIIEncoding.ASCII.GetBytes(sTemp);/加密方法/待加密的串/经过加密的串publicstringEncrypto(stringSource)bytebytIn
11、=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
12、.FlushFinalBlock();ms.Close();bytebytOut=ms.ToArray();returnConvert.ToBase64String(bytOut);/解密方法/待解密的串/经过解密的串publicstringDecrypto(stringSource)bytebytIn=Convert.FromBase64String(Source);MemoryStreamms=newMemoryStream(bytIn,0,bytIn.Length);mobjCryptoService.Key=GetLegalKey();mobjCryptoService.IV=GetL
13、egalIV();ICryptoTransformencrypto=mobjCryptoService.CreateDecryptor();CryptoStreamcs=newCryptoStream(ms,encrypto,CryptoStreamMode.Read);StreamReadersr=newStreamReader(cs);returnsr.ReadToEnd();方法五:usingSystem.IO;usingSystem.Security.Cryptography;usingSystem.Text;./默认密钥向量privatestaticbyteKeys=0x12,0x3
14、4,0x56,0x78,0x90,0xAB,0xCD,0xEF;/*/*/*/DES加密字符串/待加密的字符串/加密密钥,要求为8位/加密成功返回加密后的字符串,失败返回源串publicstaticstringEncryptDES(stringencryptString,stringencryptKey)trybytergbKey=Encoding.UTF8.GetBytes(encryptKey.Substring(0,8);bytergbIV=Keys;byteinputByteArray=Encoding.UTF8.GetBytes(encryptString);DESCryptoSer
15、viceProviderdCSP=newDESCryptoServiceProvider();MemoryStreammStream=newMemoryStream();CryptoStreamcStream=newCryptoStream(mStream,dCSP.CreateEncryptor(rgbKey,rgbIV),CryptoStreamMode.Write);cStream.Write(inputByteArray,0,inputByteArray.Length);cStream.FlushFinalBlock();returnConvert.ToBase64String(mSt
16、ream.ToArray();catchreturnencryptString;/*/*/*/DES解密字符串/待解密的字符串/解密密钥,要求为8位,和加密密钥相同/解密成功返回解密后的字符串,失败返源串publicstaticstringDecryptDES(stringdecryptString,stringdecryptKey)trybytergbKey=Encoding.UTF8.GetBytes(decryptKey);bytergbIV=Keys;byteinputByteArray=Convert.FromBase64String(decryptString);DESCrypto
17、ServiceProviderDCSP=newDESCryptoServiceProvider();MemoryStreammStream=newMemoryStream();CryptoStreamcStream=newCryptoStream(mStream,DCSP.CreateDecryptor(rgbKey,rgbIV),CryptoStreamMode.Write);cStream.Write(inputByteArray,0,inputByteArray.Length);cStream.FlushFinalBlock();returnEncoding.UTF8.GetString
18、(mStream.ToArray();catchreturndecryptString;方法六(文件加密):usingSystem.IO;usingSystem.Security.Cryptography;usingSystem.Text;./加密文件privatestaticvoidEncryptData(StringinName,StringoutName,bytedesKey,bytedesIV)/Createthefilestreamstohandletheinputandoutputfiles.FileStreamfin=newFileStream(inName,FileMode.O
19、pen,FileAccess.Read);FileStreamfout=newFileStream(outName,FileMode.OpenOrCreate,FileAccess.Write);fout.SetLength(0);/Createvariablestohelpwithreadandwrite.bytebin=newbyte100;/Thisisintermediatestoragefortheencryption.longrdlen=0;/Thisisthetotalnumberofbyteswritten.longtotlen=fin.Length;/Thisisthetot
20、allengthoftheinputfile.intlen;/Thisisthenumberofbytestobewrittenatatime.DESdes=newDESCryptoServiceProvider();CryptoStreamencStream=newCryptoStream(fout,des.CreateEncryptor(desKey,desIV),CryptoStreamMode.Write);/Readfromtheinputfile,thenencryptandwritetotheoutputfile.while(rdlentotlen)len=fin.Read(bi
21、n,0,100);encStream.Write(bin,0,len);rdlen=rdlen+len;encStream.Close();fout.Close();fin.Close();/解密文件privatestaticvoidDecryptData(StringinName,StringoutName,bytedesKey,bytedesIV)/Createthefilestreamstohandletheinputandoutputfiles.FileStreamfin=newFileStream(inName,FileMode.Open,FileAccess.Read);FileS
22、treamfout=newFileStream(outName,FileMode.OpenOrCreate,FileAccess.Write);fout.SetLength(0);/Createvariablestohelpwithreadandwrite.bytebin=newbyte100;/Thisisintermediatestoragefortheencryption.longrdlen=0;/Thisisthetotalnumberofbyteswritten.longtotlen=fin.Length;/Thisisthetotallengthoftheinputfile.int
23、len;/Thisisthenumberofbytestobewrittenatatime.DESdes=newDESCryptoServiceProvider();CryptoStreamencStream=newCryptoStream(fout,des.CreateDecryptor(desKey,desIV),CryptoStreamMode.Write);/Readfromtheinputfile,thenencryptandwritetotheoutputfile.while(rdlentotlen)len=fin.Read(bin,0,100);encStream.Write(bin,0,len);rdlen=rdlen+len;encStream.Close();fout.Close();fin.Close();分享