有关base64编码算法的相关操作

  1 
  2  using  System;
  3 
  4  namespace  Base64Utility
  5  {
  6   
  7       ///   <summary>
  8       ///  有关base64编码算法的相关操作
  9       /// By 自由奔腾(wgscd)
 10       ///   </summary>
 11       public   class  Base64Utility
 12      {
 13           public  Base64Utility()
 14          {
 15               //
 16               //  TODO: 在此处添加构造函数逻辑
 17               //
 18          }
 19           // --------------------------------------------------------------------------------
 20           ///   <summary>
 21           ///  将字符串使用base64算法加密
 22           ///   </summary>
 23           ///   <param name="sourceString"> 待加密的字符串 </param>
 24           ///   <param name="ens"> System.Text.Encoding 对象,如创建中文编码集对象:System.Text.Encoding.GetEncoding(54936) </param>
 25           ///   <returns> 加码后的文本字符串 </returns>
 26           public   static   string  EncodingForString( string  sourceString,System.Text.Encoding ens)
 27          {
 28               return  Convert.ToBase64String(ens.GetBytes(sourceString));
 29          }
 30 
 31 
 32           ///   <summary>
 33           ///  将字符串使用base64算法加密
 34           ///   </summary>
 35           ///   <param name="sourceString"> 待加密的字符串 </param>
 36           ///   <returns> 加码后的文本字符串 </returns>
 37           public   static   string  EncodingForString( string  sourceString)
 38          {
 39               return  EncodingForString(sourceString,System.Text.Encoding.GetEncoding( 54936 ));
 40          }
 41 
 42 
 43           ///   <summary>
 44           ///  从base64编码的字符串中还原字符串,支持中文
 45           ///   </summary>
 46           ///   <param name="base64String"> base64加密后的字符串 </param>
 47           ///   <param name="ens"> System.Text.Encoding 对象,如创建中文编码集对象:System.Text.Encoding.GetEncoding(54936) </param>
 48           ///   <returns> 还原后的文本字符串 </returns>
 49           public   static   string  DecodingForString( string  base64String,System.Text.Encoding ens)
 50          {
 51               /* *
 52              * ***********************************************************
 53              * 
 54              * 从base64String中取得的字节值为字符的机内码(ansi字符编码)
 55              * 一般的,用机内码转换为汉字是公式:
 56              * (char)(第一字节的二进制值*256+第二字节值)
 57              * 而在c#中的char或string由于采用了unicode编码,就不能按照上面的公式计算了
 58              * ansi的字节编和unicode编码不兼容
 59              * 故利用.net类库提供的编码类实现从ansi编码到unicode代码的转换
 60              * 
 61              * GetEncoding 方法依赖于基础平台支持大部分代码页。但是,对于下列情况提供系统支持:默认编码,即在执行此方法的计算机的区域设置中指定的编码;Little-Endian Unicode (UTF-16LE);Big-Endian Unicode (UTF-16BE);Windows 操作系统 (windows-1252);UTF-7;UTF-8;ASCII 以及 GB18030(简体中文)。
 62              *
 63              *指定下表中列出的其中一个名称以获取具有对应代码页的系统支持的编码。
 64              *
 65              * 代码页 名称 
 66              * 1200 “UTF-16LE”、“utf-16”、“ucs-2”、“unicode”或“ISO-10646-UCS-2” 
 67              * 1201 “UTF-16BE”或“unicodeFFFE” 
 68              * 1252 “windows-1252” 
 69              * 65000 “utf-7”、“csUnicode11UTF7”、“unicode-1-1-utf-7”、“unicode-2-0-utf-7”、“x-unicode-1-1-utf-7”或“x-unicode-2-0-utf-7” 
 70              * 65001 “utf-8”、“unicode-1-1-utf-8”、“unicode-2-0-utf-8”、“x-unicode-1-1-utf-8”或“x-unicode-2-0-utf-8” 
 71              * 20127 “us-ascii”、“us”、“ascii”、“ANSI_X3.4-1968”、“ANSI_X3.4-1986”、“cp367”、“csASCII”、“IBM367”、“iso-ir-6”、“ISO646-US”或“ISO_646.irv:1991” 
 72              * 54936 “GB18030” 
 73              *
 74              * 某些平台可能不支持特定的代码页。例如,Windows 98 的美国版本可能不支持日语 Shift-jis 代码页(代码页 932)。这种情况下,GetEncoding 方法将在执行下面的 C# 代码时引发 NotSupportedException:
 75              *
 76              * Encoding enc = Encoding.GetEncoding("shift-jis"); 
 77              *
 78              * ************************************************************* */
 79               // 从base64String中得到原始字符
 80               return  ens.GetString(Convert.FromBase64String(base64String));
 81          }
 82 
 83 
 84           ///   <summary>
 85           ///  从base64编码的字符串中还原字符串,支持中文
 86           ///   </summary>
 87           ///   <param name="base64String"> base64加密后的字符串 </param>
 88           ///   <returns> 还原后的文本字符串 </returns>
 89           public   static   string  DecodingForString( string  base64String)
 90          { 
 91               return  DecodingForString(base64String,System.Text.Encoding.GetEncoding( 65001 ));
 92          }
 93 
 94 
 95           // --------------------------------------------------------------------------------------
 96 
 97           ///   <summary>
 98           ///  对任意类型的文件进行base64加码
 99           ///   </summary>
100           ///   <param name="fileName"> 文件的路径和文件名 </param>
101           ///   <returns> 对文件进行base64编码后的字符串 </returns>
102           public   static   string  EncodingForFile( string  fileName)
103          {
104              System.IO.FileStream fs = System.IO.File.OpenRead(fileName);
105              System.IO.BinaryReader br =   new  System.IO.BinaryReader(fs);
106 
107               /* System.Byte[] b=new System.Byte[fs.Length];
108              fs.Read(b,0,Convert.ToInt32(fs.Length)); */
109 
110 
111               string  base64String = Convert.ToBase64String(br.ReadBytes(( int )fs.Length));
112 
113 
114              br.Close();
115              fs.Close();
116               return  base64String;
117          }
118 
119           ///   <summary>
120           ///  把经过base64编码的字符串保存为文件
121           ///   </summary>
122           ///   <param name="base64String"> 经base64加码后的字符串 </param>
123           ///   <param name="fileName"> 保存文件的路径和文件名 </param>
124           ///   <returns> 保存文件是否成功 </returns>
125           public   static   bool  SaveDecodingToFile( string  base64String, string  fileName)
126          {
127              System.IO.FileStream fs = new  System.IO.FileStream(fileName, System.IO.FileMode.Create);
128              System.IO.BinaryWriter bw  =   new  System.IO.BinaryWriter(fs);
129              bw.Write(Convert.FromBase64String(base64String));
130              bw.Close();
131              fs.Close();
132               return   true ;
133          }
134 
135 
136           // -------------------------------------------------------------------------------
137 
138           ///   <summary>
139           ///  从网络地址一取得文件并转化为base64编码
140           ///   </summary>
141           ///   <param name="url"> 文件的url地址,一个绝对的url地址 </param>
142           ///   <param name="objWebClient"> System.Net.WebClient 对象 </param>
143           ///   <returns></returns>
144           public   static   string  EncodingFileFromUrl( string  url,System.Net.WebClient objWebClient)
145          {
146               return  Convert.ToBase64String(objWebClient.DownloadData(url));
147          }
148 
149 
150           ///   <summary>
151           ///  从网络地址一取得文件并转化为base64编码
152           ///   </summary>
153           ///   <param name="url"> 文件的url地址,一个绝对的url地址 </param>
154           ///   <returns> 将文件转化后的base64字符串 </returns>
155           public   static   string  EncodingFileFromUrl( string  url)
156          {
157               // System.Net.WebClient myWebClient = new System.Net.WebClient();
158               return  EncodingFileFromUrl(url, new  System.Net.WebClient());
159          }
160      }
161  }
162 
163 

转载于:https://www.cnblogs.com/asyuras/archive/2005/11/15/276814.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值