Csharp/C#教程:C#编写的Base64加密和解密类分享

这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密、解密,也可以自己设定秘钥进行加密和解密,非常实用

代码一:非常精简的代码

///<summary> ///Base64加密,解密方法 ///</summary> ///<paramname="s">输入字符串</param> ///<paramname="c">true-加密,false-解密</param> staticpublicstringbase64(strings,boolc) { if(c) { returnSystem.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(s)); } else { try { returnSystem.Text.Encoding.Default.GetString(System.Convert.FromBase64String(pwdString)); } catch(Exceptionexp) { returnexp.Message; } } }

代码二:

usingSystem; usingSystem.Security.Cryptography; usingSystem.Text; namespaceDotNet.Utilities { ///<summary> ///Encrypt的摘要说明。 ///</summary> publicclassDEncrypt { ///<summary> ///构造方法 ///</summary> publicDEncrypt() { } #region使用缺省密钥字符串加密/解密string ///<summary> ///使用缺省密钥字符串加密string ///</summary> ///<paramname="original">明文</param> ///<returns>密文</returns> publicstaticstringEncrypt(stringoriginal) { returnEncrypt(original,"sharejs.com"); } ///<summary> ///使用缺省密钥字符串解密string ///</summary> ///<paramname="original">密文</param> ///<returns>明文</returns> publicstaticstringDecrypt(stringoriginal) { returnDecrypt(original,"sharejs.com",System.Text.Encoding.Default); } #endregion #region使用给定密钥字符串加密/解密string ///<summary> ///使用给定密钥字符串加密string ///</summary> ///<paramname="original">原始文字</param> ///<paramname="key">密钥</param> ///<paramname="encoding">字符编码方案</param> ///<returns>密文</returns> publicstaticstringEncrypt(stringoriginal,stringkey) { byte[]buff=System.Text.Encoding.Default.GetBytes(original); byte[]kb=System.Text.Encoding.Default.GetBytes(key); returnConvert.ToBase64String(Encrypt(buff,kb)); } ///<summary> ///使用给定密钥字符串解密string ///</summary> ///<paramname="original">密文</param> ///<paramname="key">密钥</param> ///<returns>明文</returns> publicstaticstringDecrypt(stringoriginal,stringkey) { returnDecrypt(original,key,System.Text.Encoding.Default); } ///<summary> ///使用给定密钥字符串解密string,返回指定编码方式明文 ///</summary> ///<paramname="encrypted">密文</param> ///<paramname="key">密钥</param> ///<paramname="encoding">字符编码方案</param> ///<returns>明文</returns> publicstaticstringDecrypt(stringencrypted,stringkey,Encodingencoding) { byte[]buff=Convert.FromBase64String(encrypted); byte[]kb=System.Text.Encoding.Default.GetBytes(key); returnencoding.GetString(Decrypt(buff,kb)); } #endregion #region使用缺省密钥字符串加密/解密/byte[] ///<summary> ///使用缺省密钥字符串解密byte[] ///</summary> ///<paramname="encrypted">密文</param> ///<paramname="key">密钥</param> ///<returns>明文</returns> publicstaticbyte[]Decrypt(byte[]encrypted) { byte[]key=System.Text.Encoding.Default.GetBytes("sharejs.com"); returnDecrypt(encrypted,key); } ///<summary> ///使用缺省密钥字符串加密 ///</summary> ///<paramname="original">原始数据</param> ///<paramname="key">密钥</param> ///<returns>密文</returns> publicstaticbyte[]Encrypt(byte[]original) { byte[]key=System.Text.Encoding.Default.GetBytes("sharejs.com"); returnEncrypt(original,key); } #endregion #region使用给定密钥加密/解密/byte[] ///<summary> ///生成MD5摘要 ///</summary> ///<paramname="original">数据源</param> ///<returns>摘要</returns> publicstaticbyte[]MakeMD5(byte[]original) { MD5CryptoServiceProviderhashmd5=newMD5CryptoServiceProvider(); byte[]keyhash=hashmd5.ComputeHash(original); hashmd5=null; returnkeyhash; } ///<summary> ///使用给定密钥加密 ///</summary> ///<paramname="original">明文</param> ///<paramname="key">密钥</param> ///<returns>密文</returns> publicstaticbyte[]Encrypt(byte[]original,byte[]key) { TripleDESCryptoServiceProviderdes=newTripleDESCryptoServiceProvider(); des.Key=MakeMD5(key); des.Mode=CipherMode.ECB; returndes.CreateEncryptor().TransformFinalBlock(original,0,original.Length); } ///<summary> ///使用给定密钥解密数据 ///</summary> ///<paramname="encrypted">密文</param> ///<paramname="key">密钥</param> ///<returns>明文</returns> publicstaticbyte[]Decrypt(byte[]encrypted,byte[]key) { TripleDESCryptoServiceProviderdes=newTripleDESCryptoServiceProvider(); des.Key=MakeMD5(key); des.Mode=CipherMode.ECB; returndes.CreateDecryptor().TransformFinalBlock(encrypted,0,encrypted.Length); } #endregion } }

代码三:

usingSystem; usingSystem.Collections.Generic; usingSystem.Text; namespaceMyLibs.encrypt { publicclassBase64 { privatestaticstringbase64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//编码后的字符集 privatestaticint[]base64DecodeChars=newint[]{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1};//对应ASICC字符的位置 publicstaticstringbase64encode(stringstr) {//加密 stringOut=""; inti=0,len=str.Length; charc1,c2,c3; while(i<len) { c1=Convert.ToChar(str[i++]&0xff); if(i==len) { Out+=base64EncodeChars[c1>>2]; Out+=base64EncodeChars[(c1&0x3)<<4]; Out+="=="; break; } c2=str[i++]; if(i==len) { Out+=base64EncodeChars[c1>>2]; Out+=base64EncodeChars[((c1&0x3)<<4)|((c2&0xF0)>>4)]; Out+=base64EncodeChars[(c2&0xF)<<2]; Out+="="; break; } c3=str[i++]; Out+=base64EncodeChars[c1>>2]; Out+=base64EncodeChars[((c1&0x3)<<4)|((c2&0xF0)>>4)]; Out+=base64EncodeChars[((c2&0xF)<<2)|((c3&0xC0)>>6)]; Out+=base64EncodeChars[c3&0x3F]; } returnOut; } publicstringutf16to8(stringstr) { stringOut=""; inti,len; charc;//char为16位Unicode字符,范围0~0xffff,感谢vczh提醒 len=str.Length; for(i=0;i<len;i++) {//根据字符的不同范围分别转化 c=str[i]; if((c>=0x0001)&&(c<=0x007F)) { Out+=str[i]; } elseif(c>0x07FF) { Out+=(char)(0xE0|((c>>12)&0x0F)); Out+=(char)(0x80|((c>>6)&0x3F)); Out+=(char)(0x80|((c>>0)&0x3F)); } else { Out+=(char)(0xC0|((c>>6)&0x1F)); Out+=(char)(0x80|((c>>0)&0x3F)); } } returnOut; } publicstaticstringbase64decode(stringstr) {//解密 intc1,c2,c3,c4; inti,len; stringOut; len=str.Length; i=0;Out=""; while(i<len) { do { c1=base64DecodeChars[str[i++]&0xff]; }while(i<len&&c1==-1); if(c1==-1)break; do { c2=base64DecodeChars[str[i++]&0xff]; }while(i<len&&c2==-1); if(c2==-1)break; Out+=(char)((c1<<2)|((c2&0x30)>>4)); do { c3=str[i++]&0xff; if(c3==61)returnOut; c3=base64DecodeChars[c3]; }while(i<len&&c3==-1); if(c3==-1)break; Out+=(char)(((c2&0XF)<<4)|((c3&0x3C)>>2)); do { c4=str[i++]&0xff; if(c4==61)returnOut; c4=base64DecodeChars[c4]; }while(i<len&&c4==-1); if(c4==-1)break; Out+=(char)(((c3&0x03)<<6)|c4); } returnOut; } publicstringutf8to16(stringstr) { stringOut=""; inti,len; charc,char2,char3; len=str.Length; i=0;while(i<len) { c=str[i++]; switch(c>>4) { case0: case1: case2: case3: case4: case5: case6: case7:Out+=str[i-1];break; case12: case13:char2=str[i++]; Out+=(char)(((c&0x1F)<<6)|(char2&0x3F));break; case14:char2=str[i++]; char3=str[i++]; Out+=(char)(((c&0x0F)<<12)|((char2&0x3F)<<6)|((char3&0x3F)<<0));break; } } returnOut; } } }

上述就是C#学习教程:C#编写的Base64加密和解密类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

ctvol管理联系方式QQ:251552304

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

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐