.NET实现字符串base64编码



using System; 
using System.Text; 
using System.IO; 
using System.Security; 
using System.Security.Cryptography; 
  
namespace Tgnet.Base.Security 
{ 
    /**//// <summary> 
    /// 有关Base64编码算法的相关操作 
    /// </summary> 
    /// <example>如下的示例为对一个字符串进行Base64编码,并返回编码后的字符串: 
    /// <code> 
    ///        public string ToBase64(string str){ 
    ///            return Security.Base64.EncodingString(str); 
    ///        } 
    /// </code> 
    /// </example> 
    public class Base64 
    { 
        /**//// <summary> 
        /// 将字符串使用base64算法加密 
        /// </summary> 
        /// <param name="SourceString">待加密的字符串</param> 
        /// <param name="Ens">System.Text.Encoding 对象,如创建中文编码集对象: 
        /// System.Text.Encoding.GetEncoding("gb2312")</param> 
        /// <returns>编码后的文本字符串</returns> 
        public static string EncodingString(string SourceString,System.Text.Encoding Ens) 
        { 
            return Convert.ToBase64String(Ens.GetBytes(SourceString)); 
        } 
  
        /**//// <summary> 
        /// 使用缺省的代码页将字符串使用base64算法加密 
        /// </summary> 
        /// <param name="SourceString">待加密的字符串</param> 
        /// <returns>加密后的文本字符串</returns> 
        public static string EncodingString(string SourceString) 
        { 
            return EncodingString(SourceString,System.Text.Encoding.Default); 
        } 
  
        /**//// <summary> 
        /// 从base64编码的字符串中还原字符串,支持中文 
        /// </summary> 
        /// <param name="Base64String">Base64加密后的字符串</param> 
        /// <param name="Ens">System.Text.Encoding对象,如创建中文编码集对象: 
        /// System.Text.Encoding.Default</param> 
        /// <returns>还原后的文本字符串</returns> 
        public static string DecodingString(string Base64String,System.Text.Encoding Ens) 
        { 
            return Ens.GetString((Convert.FromBase64String(Base64String))); 
        } 
  
        /**//// <summary> 
        ///使用缺省的代码页从Base64编码的字符串中还原字符串,支持中文 
        /// </summary> 
        /// <param name="Base64String">Base64加密后的字符串</param> 
        /// <returns>还原后的文本字符串</returns> 
        public static string DecodingString(string Base64String) 
        {  
            return DecodingString(Base64String,System.Text.Encoding.Default); 
        } 
  
        /**//// <summary> 
        /// 对一个文件进行Base64编码,并返回编码后的字符串 
        /// </summary> 
        /// <param name="strFileName">文件的路径和文件名</param> 
        /// <returns>对文件进行Base64编码后的字符串</returns> 
        public static string EncodingFileToString(string strFileName) 
        { 
            System.IO.FileStream fs=System.IO.File.OpenRead(strFileName); 
            System.IO.BinaryReader br=new System.IO.BinaryReader(fs); 
          
            string Base64String=Convert.ToBase64String(br.ReadBytes((int)fs.Length)); 
          
            br.Close(); 
            fs.Close(); 
            return Base64String; 
        } 
  
  
        /**//// <summary> 
        /// 对一个文件进行Base64编码,并将编码后的内容写入到一个文件 
        /// </summary> 
        /// <param name="strSourceFileName">要编码的文件地址,支持任何类型的文件</param> 
        /// <param name="strSaveFileName">要写入的文件路径</param> 
        /// <returns>如果写入成功,则返回真</returns> 
        public static bool EncodingFileToFile(string strSourceFileName,string strSaveFileName) 
        { 
            string strBase64=EncodingFileToString(strSourceFileName); 
          
            System.IO.StreamWriter fs=new System.IO.StreamWriter(strSaveFileName); 
            fs.Write(strBase64); 
            fs.Close(); 
            return true; 
        } 
  
        /**//// <summary> 
        /// 将Base64编码字符串解码并存储到一个文件中 
        /// </summary> 
        /// <param name="Base64String">经过Base64编码后的字符串</param> 
        /// <param name="strSaveFileName">要输出的文件路径,如果文件存在,将被重写</param> 
        /// <returns>如果操作成功,则返回True</returns> 
        public static bool DecodingFileFromString(string Base64String,string strSaveFileName) 
        { 
            System.IO.FileStream fs=new System.IO.FileStream(strSaveFileName,System.IO.FileMode.Create); 
            System.IO.BinaryWriter bw=new System.IO.BinaryWriter(fs); 
            bw.Write(Convert.FromBase64String(Base64String)); 
            //bw.Write(Convert.ToBase64String) 
            bw.Close(); 
            fs.Close(); 
            return true; 
        } 
  
        /**//// <summary> 
        /// 将一个由Base64编码产生的文件解码并存储到一个文件 
        /// </summary> 
        /// <param name="strBase64FileName">以Base64编码格式存储的文件</param> 
        /// <param name="strSaveFileName">要输出的文件路径,如果文件存在,将被重写</param> 
        /// <returns>如果操作成功,则返回True</returns> 
        public static bool DecodingFileFromFile(string strBase64FileName,string strSaveFileName) 
        { 
            System.IO.StreamReader fs=new System.IO.StreamReader(strBase64FileName,System.Text.Encoding.ASCII); 
            char[] base64CharArray=new char[fs.BaseStream.Length]; 
            fs.Read(base64CharArray,0,(int)fs.BaseStream.Length); 
            string Base64String=new string(base64CharArray); 
            fs.Close(); 
            return DecodingFileFromString(Base64String,strSaveFileName); 
        } 
  
        /**//// <summary> 
        /// 从网络地址一取得文件并转化为base64编码 
        /// </summary> 
        /// <param name="strURL">文件的URL地址,必须是绝对URL地址</param> 
        /// <param name="objWebClient">System.Net.WebClient 对象</param> 
        /// <returns>返回经过Base64编码的Web资源字符串</returns> 
        public static string EncodingWebFile(string strURL,System.Net.WebClient objWebClient) 
        { 
            return Convert.ToBase64String(objWebClient.DownloadData(strURL)); 
        } 
  
        /**//// <summary> 
        /// 从网络地址一取得文件并转化为base64编码 
        /// </summary> 
        /// <param name="strURL">文件的URL地址,必须是绝对URL地址</param> 
        /// <returns>返回经过Base64编码的Web资源字符串</returns> 
        public static string EncodingWebFile(string strURL) 
        { 
            return EncodingWebFile(strURL,new System.Net.WebClient()); 
        } 
    } 
} 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值