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

//-------------------------------------------------------------------------------

/// <summary>
/// 从网络地址一取得文件并转化为base64编码
/// </summary>
/// <param name="url">文件的url地址,一个绝对的url地址</param>
/// <param name="objwebclient">system.net.webclient 对象</param>
/// <returns></returns>
public static string encodingfilefromurl(string url,system.net.webclient objwebclient)
{
return convert.tobase64string(objwebclient.downloaddata(url));
}

/// <summary>
/// 从网络地址一取得文件并转化为base64编码
/// </summary>
/// <param name="url">文件的url地址,一个绝对的url地址</param>
/// <returns>将文件转化后的base64字符串</returns>
public static string encodingfilefromurl(string url)
{
//system.net.webclient mywebclient = new system.net.webclient();
return encodingfilefromurl(url,new system.net.webclient());
}
}
}

base64编码类------原始码(C#)相关推荐

  1. base64编码类------源代码(C#)

    base64编码类------源代码(C#) using  System;  namespace  shapBse64  ... {  /**//// <summary>  /// 有关b ...

  2. base64编码类源代码(C#)

    using System; namespace shapBse64 { /// <summary> /// 有关base64编码算法哋楿关操作 ///By 自由渀腾(wgscd) /// ...

  3. 易语言html解密源码,易语言 BASE64编码解码源码

    易语言 BASE64编码源码 ------------– .版本 2 .子程序 编码转换_BASE64编码, 文本型, 公开, BASE64编码处理(返回编码后的文本) .参数 待编码数据, 字节集, ...

  4. java base64 编码 类_java base64编码和解码的三种方式 | 学步园

    方式一:使用commons-codec.jar /** * @param bytes * @return */ public static byte[] decode(final byte[] byt ...

  5. base64编码原理+源码

    看一下Base64的索引表,字符选用了"A-Z.a-z.0-9.+./" 64个可打印字符.数值代表字符的索引,这个是标准Base64协议规定的,不能更改.64个字符用6个bit位 ...

  6. C# Base64编码/解码

    一.编码规则      Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4 ...

  7. indy html 编码,INDY10 BASE64编码

    INDY10 BASE64编码 DELPHI自带的BASE64单元,在项目中使用发现非常没有效率,INDY10的好用. uses IdCoderMIME BASE64编码类:TIdEncoderMIM ...

  8. Base64 Encode/Decode Class C++ SourceCode - Base64编码/解码 类 C++ 源码

    Base64 Encode/Decode Class C++ SourceCode - Base64编码/解码 类 C++ 源码 1.Base64.h // Base64.h: interface f ...

  9. Java中使用Base64进行编码解码的工具类-将验证码图片使用Base64编码并返回给前端

    场景 前端使用Vue,验证码图片的src属性来自于后台SpringBoot接口. 后台验证码接口生成验证码图片并将其使用Base64进行编码. 前端就可以直接使用 data:image/png;bas ...

最新文章

  1. Python 中常见的 TypeError 是什么?
  2. proteus跑马灯仿真_不花费一分钱,实现跑马灯编程实验
  3. 链表之判断一个链表是否为回文结构(一)
  4. 谷歌开源的 GAN 库--TFGAN
  5. linux系统 安装mysql,在linux系统中安装MySQL
  6. STL::算法::常见算法(二)
  7. Flex练习-打游戏
  8. Angularjs中$http以post请求通过消息体传递参数
  9. java 文件比对(三)-- 使用 xmlUnit
  10. 51单片机实战教程基础硬件篇(三 51单片机开发板设计)
  11. 单片机学习(三)中断
  12. 2011年6个微博营销趋势
  13. 用python整个活(6)——完全数
  14. 金融企业邮箱发推荐信,金融行业如何保障邮件安全?
  15. PowerMock注解PowerMockIgnore的使用方法
  16. 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)
  17. Vue后台管理系统项目——实现登录功能
  18. libGDX学习记录(一)
  19. 免费的聚合数据新闻头条API接口调用
  20. 20 多个国外优秀Android开源 App

热门文章

  1. 区块链技术以太坊简介
  2. DCloud短信验证申请
  3. Mysql数据恢复---闪回恢复
  4. 文件下载(三):wireshark抓包文件下载整个过程
  5. HTML5开发 页游/手游动画及游戏系列教程(Game Tutorial):(一)物体动起来吧
  6. mysql---分表分库
  7. Choco-slover的使用
  8. 手机号时间戳加密传到前端_如何在不到一个小时的时间内加密您的一生
  9. JMeter学习(四)使用JMeter的HTTP代理服务器实现抓包功能
  10. web漏洞扫描器-Burpsuite 常规测试