惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
V2EX - 技术
V2EX - 技术
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Schneier on Security
I
InfoQ
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security @ Cisco Blogs
O
OpenAI News
W
WeLiveSecurity
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
人人都是产品经理
人人都是产品经理
Cloudbric
Cloudbric
The Last Watchdog
The Last Watchdog
The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
NISL@THU
NISL@THU
T
Tailwind CSS Blog
V
Visual Studio Blog
PCI Perspectives
PCI Perspectives
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
D
DataBreaches.Net
B
Blog RSS Feed
N
News and Events Feed by Topic
N
News and Events Feed by Topic
H
Heimdal Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
Latest news
Latest news
V
Vulnerabilities – Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
V
V2EX
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
Help Net Security
Help Net Security

博客园 - melody&bobo

C#加密解密 端口数据库连接 ANSI, UNICODE,UTF8编码的区别 调用系统API打印图片文字 windows2003安全设置 图片与字节数组相互转换的方法 jQuery Ajax 方法调用 Asp.Net WebService 的详细例子 使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库 查看SQL 语句执行性能 SSIS 获取时间表达式 获得时间段之间每月的最后一天 ADSL拨号获得不同IP地址 C#(.Net) 解决Informix中文乱码问题 SQL SPLIT() 方法实现 JS获取URL参数值 datatable操作集合 表单提交文件 - melody&bobo - 博客园 nginx实现网站负载均衡测试实例(windows下IIS做负载实测) Web Application Stress Tool(WAS,Web应用负载测试工具)详细说明
Base64 加密字符串和文件
melody&bobo · 2010-07-28 · via 博客园 - melody&bobo

代码

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;
   }