Base64 加密字符串和文件
生活随笔
收集整理的這篇文章主要介紹了
Base64 加密字符串和文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼 using?System;
namespace?shapBse64
{
?
??///?<summary>
??///?有關base64編碼算法的相關操作
??///By?自由奔騰(wgscd)
??///?</summary>
??public?class?SBase64
??{
???public?SBase64()
???{
????//
????//?TODO:?在此處添加構造函數邏輯
????//
???}
???//--------------------------------------------------------------------------------
???///?<summary>
???///?將字符串使用base64算法加密
???///?</summary>
???///?<param?name="sourceString">待加密的字符串</param>
???///?<param?name="ens">System.Text.Encoding?對象,如創建中文編碼集對象:System.Text.Encoding.GetEncoding(54936)</param>
???///?<returns>加碼后的文本字符串</returns>
???public?static?string?EncodingForString(string?sourceString,System.Text.Encoding?ens)
???{
????return?Convert.ToBase64String(ens.GetBytes(sourceString));
???}
???///?<summary>
???///?將字符串使用base64算法加密
???///?</summary>
???///?<param?name="sourceString">待加密的字符串</param>
???///?<returns>加碼后的文本字符串</returns>
???public?static?string?EncodingForString(string?sourceString)
???{
????return?EncodingForString(sourceString,System.Text.Encoding.GetEncoding(54936));
???}
???///?<summary>
???///?從base64編碼的字符串中還原字符串,支持中文
???///?</summary>
???///?<param?name="base64String">base64加密后的字符串</param>
???///?<param?name="ens">System.Text.Encoding?對象,如創建中文編碼集對象:System.Text.Encoding.GetEncoding(54936)</param>
???///?<returns>還原后的文本字符串</returns>
???public?static?string?DecodingForString(string?base64String,System.Text.Encoding?ens)
???{
????/**
????*?***********************************************************
????*?
????*?從base64String中取得的字節值為字符的機內碼(ansi字符編碼)
????*?一般的,用機內碼轉換為漢字是公式:
????*?(char)(第一字節的二進制值*256+第二字節值)
????*?而在c#中的char或string由于采用了unicode編碼,就不能按照上面的公式計算了
????*?ansi的字節編和unicode編碼不兼容
????*?故利用.net類庫提供的編碼類實現從ansi編碼到unicode代碼的轉換
????*?
????*?GetEncoding?方法依賴于基礎平臺支持大部分代碼頁。但是,對于下列情況提供系統支持:默認編碼,即在執行此方法的計算機的區域設置中指定的編碼;Little-Endian?Unicode?(UTF-16LE);Big-Endian?Unicode?(UTF-16BE);Windows?操作系統?(windows-1252);UTF-7;UTF-8;ASCII?以及?GB18030(簡體中文)。
????*
????*指定下表中列出的其中一個名稱以獲取具有對應代碼頁的系統支持的編碼。
????*
????*?代碼頁?名稱?
????*?1200?“UTF-16LE”、“utf-16”、“ucs-2”、“unicode”或“ISO-10646-UCS-2”?
????*?1201?“UTF-16BE”或“unicodeFFFE”?
????*?1252?“windows-1252”?
????*?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”?
????*?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”?
????*?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”?
????*?54936?“GB18030”?
????*
????*?某些平臺可能不支持特定的代碼頁。例如,Windows?98?的美國版本可能不支持日語?Shift-jis?代碼頁(代碼頁?932)。這種情況下,GetEncoding?方法將在執行下面的?C#?代碼時引發?NotSupportedException:
????*
????*?Encoding?enc?=?Encoding.GetEncoding("shift-jis");?
????*
????*?**************************************************************/
????//從base64String中得到原始字符
????return?ens.GetString(Convert.FromBase64String(base64String));
???}
???///?<summary>
???///?從base64編碼的字符串中還原字符串,支持中文
???///?</summary>
???///?<param?name="base64String">base64加密后的字符串</param>
???///?<returns>還原后的文本字符串</returns>
???public?static?string?DecodingForString(string?base64String)
???{?
????return?DecodingForString(base64String,System.Text.Encoding.GetEncoding(54936));
???}
???//--------------------------------------------------------------------------------------
???///?<summary>
???///?對任意類型的文件進行base64加碼
???///?</summary>
???///?<param?name="fileName">文件的路徑和文件名</param>
???///?<returns>對文件進行base64編碼后的字符串</returns>
???public?static?string?EncodingForFile(string?fileName)
???{
????System.IO.FileStream?fs=System.IO.File.OpenRead(fileName);
????System.IO.BinaryReader?br=?new?System.IO.BinaryReader(fs);
????/*System.Byte[]?b=new?System.Byte[fs.Length];
????fs.Read(b,0,Convert.ToInt32(fs.Length));*/
????string?base64String=Convert.ToBase64String(br.ReadBytes((int)fs.Length));
????br.Close();
????fs.Close();
????return?base64String;
???}
???///?<summary>
???///?把經過base64編碼的字符串保存為文件
???///?</summary>
???///?<param?name="base64String">經base64加碼后的字符串</param>
???///?<param?name="fileName">保存文件的路徑和文件名</param>
???///?<returns>保存文件是否成功</returns>
???public?static?bool?SaveDecodingToFile(string?base64String,string?fileName)
???{
????System.IO.FileStream?fs=new?System.IO.FileStream(fileName,?System.IO.FileMode.Create);
????System.IO.BinaryWriter?bw?=?new?System.IO.BinaryWriter(fs);
????bw.Write(Convert.FromBase64String(base64String));
????bw.Close();
????fs.Close();
????return?true;
???}
namespace?shapBse64
{
?
??///?<summary>
??///?有關base64編碼算法的相關操作
??///By?自由奔騰(wgscd)
??///?</summary>
??public?class?SBase64
??{
???public?SBase64()
???{
????//
????//?TODO:?在此處添加構造函數邏輯
????//
???}
???//--------------------------------------------------------------------------------
???///?<summary>
???///?將字符串使用base64算法加密
???///?</summary>
???///?<param?name="sourceString">待加密的字符串</param>
???///?<param?name="ens">System.Text.Encoding?對象,如創建中文編碼集對象:System.Text.Encoding.GetEncoding(54936)</param>
???///?<returns>加碼后的文本字符串</returns>
???public?static?string?EncodingForString(string?sourceString,System.Text.Encoding?ens)
???{
????return?Convert.ToBase64String(ens.GetBytes(sourceString));
???}
???///?<summary>
???///?將字符串使用base64算法加密
???///?</summary>
???///?<param?name="sourceString">待加密的字符串</param>
???///?<returns>加碼后的文本字符串</returns>
???public?static?string?EncodingForString(string?sourceString)
???{
????return?EncodingForString(sourceString,System.Text.Encoding.GetEncoding(54936));
???}
???///?<summary>
???///?從base64編碼的字符串中還原字符串,支持中文
???///?</summary>
???///?<param?name="base64String">base64加密后的字符串</param>
???///?<param?name="ens">System.Text.Encoding?對象,如創建中文編碼集對象:System.Text.Encoding.GetEncoding(54936)</param>
???///?<returns>還原后的文本字符串</returns>
???public?static?string?DecodingForString(string?base64String,System.Text.Encoding?ens)
???{
????/**
????*?***********************************************************
????*?
????*?從base64String中取得的字節值為字符的機內碼(ansi字符編碼)
????*?一般的,用機內碼轉換為漢字是公式:
????*?(char)(第一字節的二進制值*256+第二字節值)
????*?而在c#中的char或string由于采用了unicode編碼,就不能按照上面的公式計算了
????*?ansi的字節編和unicode編碼不兼容
????*?故利用.net類庫提供的編碼類實現從ansi編碼到unicode代碼的轉換
????*?
????*?GetEncoding?方法依賴于基礎平臺支持大部分代碼頁。但是,對于下列情況提供系統支持:默認編碼,即在執行此方法的計算機的區域設置中指定的編碼;Little-Endian?Unicode?(UTF-16LE);Big-Endian?Unicode?(UTF-16BE);Windows?操作系統?(windows-1252);UTF-7;UTF-8;ASCII?以及?GB18030(簡體中文)。
????*
????*指定下表中列出的其中一個名稱以獲取具有對應代碼頁的系統支持的編碼。
????*
????*?代碼頁?名稱?
????*?1200?“UTF-16LE”、“utf-16”、“ucs-2”、“unicode”或“ISO-10646-UCS-2”?
????*?1201?“UTF-16BE”或“unicodeFFFE”?
????*?1252?“windows-1252”?
????*?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”?
????*?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”?
????*?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”?
????*?54936?“GB18030”?
????*
????*?某些平臺可能不支持特定的代碼頁。例如,Windows?98?的美國版本可能不支持日語?Shift-jis?代碼頁(代碼頁?932)。這種情況下,GetEncoding?方法將在執行下面的?C#?代碼時引發?NotSupportedException:
????*
????*?Encoding?enc?=?Encoding.GetEncoding("shift-jis");?
????*
????*?**************************************************************/
????//從base64String中得到原始字符
????return?ens.GetString(Convert.FromBase64String(base64String));
???}
???///?<summary>
???///?從base64編碼的字符串中還原字符串,支持中文
???///?</summary>
???///?<param?name="base64String">base64加密后的字符串</param>
???///?<returns>還原后的文本字符串</returns>
???public?static?string?DecodingForString(string?base64String)
???{?
????return?DecodingForString(base64String,System.Text.Encoding.GetEncoding(54936));
???}
???//--------------------------------------------------------------------------------------
???///?<summary>
???///?對任意類型的文件進行base64加碼
???///?</summary>
???///?<param?name="fileName">文件的路徑和文件名</param>
???///?<returns>對文件進行base64編碼后的字符串</returns>
???public?static?string?EncodingForFile(string?fileName)
???{
????System.IO.FileStream?fs=System.IO.File.OpenRead(fileName);
????System.IO.BinaryReader?br=?new?System.IO.BinaryReader(fs);
????/*System.Byte[]?b=new?System.Byte[fs.Length];
????fs.Read(b,0,Convert.ToInt32(fs.Length));*/
????string?base64String=Convert.ToBase64String(br.ReadBytes((int)fs.Length));
????br.Close();
????fs.Close();
????return?base64String;
???}
???///?<summary>
???///?把經過base64編碼的字符串保存為文件
???///?</summary>
???///?<param?name="base64String">經base64加碼后的字符串</param>
???///?<param?name="fileName">保存文件的路徑和文件名</param>
???///?<returns>保存文件是否成功</returns>
???public?static?bool?SaveDecodingToFile(string?base64String,string?fileName)
???{
????System.IO.FileStream?fs=new?System.IO.FileStream(fileName,?System.IO.FileMode.Create);
????System.IO.BinaryWriter?bw?=?new?System.IO.BinaryWriter(fs);
????bw.Write(Convert.FromBase64String(base64String));
????bw.Close();
????fs.Close();
????return?true;
???}
?
轉載于:https://www.cnblogs.com/bobofsj11/archive/2010/07/28/1786768.html
總結
以上是生活随笔為你收集整理的Base64 加密字符串和文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UDP和TCP协议包大小的计算
- 下一篇: C#:关于双引号的输出