一、简介
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它不仅在末尾去掉填充的'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“/”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
二、实现

/// <summary>
/// Base64加密解密
/// 密文用在url,注意+的转义
/// </summary>
public class Base64Helper
{/// <summary>/// Base64加密 可逆/// </summary>/// <param name="plaintext">待加密文本</param>/// <returns></returns>public static string Encrypt(string plaintext){if (String.IsNullOrEmpty(plaintext)){throw new ArgumentNullException("明文不能为空");}byte[] data = Encoding.UTF8.GetBytes(plaintext);return Convert.ToBase64String(data);}/// <summary>/// Base64解密/// </summary>/// <param name="ciphertext">密文</param>/// <returns></returns>public static string Decrypt(string ciphertext){if (String.IsNullOrEmpty(ciphertext)){throw new ArgumentNullException("密文不能为空");}byte[] data = Convert.FromBase64String(ciphertext);return Encoding.UTF8.GetString(data);}
}

转载于:https://www.cnblogs.com/weiweixiang/p/10102929.html

【加密算法】Base64相关推荐

  1. java 加密算法 base64

    (一)java自带的加密和解密 import sun.misc.BASE64Decoder; public class Base64Utils {    public static String ge ...

  2. c++Builder XE6 MD5 加密算法 BASE64 URL 编码

    xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; varidmd5: TIdHashMessageD ...

  3. 不可逆加密算法MD5 SHA与可逆加密算法Base64

  4. linux脚本base64加密当时,【加密算法】Base64

    一.简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规 ...

  5. DES、AES、RSA等常用加密算法介绍与比较

    文本先简单介绍常用的加密算法,后面将逐步推送每个加密算法的加密原理与应用及java实现方式. 加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不 ...

  6. MD5加密算法原理及一些其他的加密算法

    Md5加密算法: 概述:md5算法也可以称为消息摘要算法,属于hash算法的一种,md5算法对输入的任意长度的消息进行运行,然后产生一个128位的消息摘要 特点: #不可逆性 唯一性:相同数据的md5 ...

  7. 常见的加密算法有哪些?

    原文地址:http://ssl.zzidc.com/chanpinzixun/2016/0222/348.html 1.MD5加密算法 MD5的全称是Message-Digest Algorithm ...

  8. 几种常用加密算法比较

    几种常用加密算法比较 由于计算机软件的非法复制,通信的泄密.数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的 ...

  9. springboot jwt token前后端分离_为什么要 前后端分离 ?

    作 者:互扯程序 来 源:互扯程序 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达! 本文知 ...

  10. python自动计算多个教学班的优秀率_第二个月课堂009python之总结(002)

    python7天的总结 ---------------------------------------------------------------------------------------- ...

最新文章

  1. java 抓屏_java抓屏代码
  2. python如何导入txt文件-python如何导入txt数据库?
  3. SpringMVC的数据响应-回写数据
  4. vue devtools面板没有显示_vue 基础入门(四)
  5. Hello,移动WEB—px,dp,dpr像素基础
  6. HTTP头部POST表单详解
  7. Visual Studio安装教程
  8. 51单片机最小系统及晶振电容的选择
  9. 【Excel文件合并工具】
  10. DAVE笔记--Micrium uc-Probo Oscilloscope调试
  11. 十进制,二进制,八进制,十六进制的解意和详细转换
  12. 在线旅游中需要上传获取那些信息,对接旅行社护照录入系统
  13. 常见游戏外挂分类及原理概述
  14. Apollo客户端使用与配置解析
  15. android手机 usb hub,巧用USB HUB扩展OTG端口 让手机平板更超能
  16. 如何用【测试思维】做“支付功能”测试?
  17. 计算机无法打压缩包是为什么,电脑怎么压缩文件 电脑打不开压缩包是怎么回事...
  18. 在next js中添加google analytics功能
  19. 【模拟IC】系统频率稳定性分析与极点补偿技术介绍
  20. 抖音直播各类话术?开场、留人、促单互动话术合集

热门文章

  1. 最长公共子序列模板(LCS)和LICS模板
  2. 李维说他跳槽了,那我以后也不是Borland的Fans了?
  3. 在Vs.net中集成 NDoc生成的 Html Help 2帮助文档
  4. Android自定义View 开发流程综合简述 Android自定义View(三)
  5. 六时出行 App 隐私政策
  6. Qt 模态对话框不模态的问题
  7. 一个屌丝程序猿的人生(七十七)
  8. 复合文档(Compound Document)读写栗子
  9. 子元素div高度不确定时父div高度如何自适应
  10. Javascript笔记:(实践篇)从jQuery插件技术说起-分析extend方法的源码(发现extend方法里有bug)(下篇)...