標籤:style blog color 使用 os 檔案
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()); } } }