.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());
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM