一、简介

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)。

二、实现

///

/// Base64加密解密

/// 密文用在url,注意+的转义

///

public class Base64Helper

{

///

/// Base64加密 可逆

///

/// 待加密文本

///

public static string Encrypt(string plaintext)

{

if (String.IsNullOrEmpty(plaintext))

{

throw new ArgumentNullException("明文不能为空");

}

byte[] data = Encoding.UTF8.GetBytes(plaintext);

return Convert.ToBase64String(data);

}

///

/// Base64解密

///

/// 密文

///

public static string Decrypt(string ciphertext)

{

if (String.IsNullOrEmpty(ciphertext))

{

throw new ArgumentNullException("密文不能为空");

}

byte[] data = Convert.FromBase64String(ciphertext);

return Encoding.UTF8.GetString(data);

}

}

数据加密算法---base64

简介 base64是把8位字符打散,转换成不被人直接识别的形式,严格来说它并不是加密算法,只能算做一种编码方式 原理 首先准备64个字符数组做为“数组库” ['A', 'B', 'C', ... 'a ...

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

xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...

Base64和3DES算法

Base64加密算法 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.它的优点是算法效率高,编码出来的结果比较简短,同时也具有不可读性. ...

廖雪峰Java10加密与安全-2加密算法-2Base64编码

1.Base64编码 Base64一种把二进制数据用文本表示的编码算法.例如 中有3个字节{\xe4, \xb8, \xad},一共是24位,每6位分组,变成4个字节{39, 0b, 22, 2d}, ...

RSA加密工具包

主要参考: http://www.blogjava.net/icewee/archive/2012/05/19/378570.html http://snowolf.iteye.com/ 基于以上代码 ...

【转】Android开发笔记(序)写在前面的目录

原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

用django框架开发一个B2C购物网站用户注册知识点总结2

一:用户部分: 用户注册: 用户注册序列化器: import re from django_redis import get_redis_connection from rest_framework ...

drf框架中jwt认证,以及自定义jwt认证

0909自我总结 drf框架中jwt 一.模块的安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方的开源项目 安装:pi ...

【Java-加密算法】对称加密、非对称加密、单向散列(转)

一提到加密,就会联想到数字签名,这两个经常被混淆的概念到底是什么呢? 加密:加密是一种以密码方式发送信息的方法.只有拥有正确密钥的人才能解开这个信息的密码.对于其他人来说,这个信息看起来就像是一系列随 ...

java单向加密算法小结(1)--Base64算法

从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...

随机推荐

git提示:Fatal:could not fetch refs from ....

在git服务器上新建项目提示: Fatal:could not fetch refs from git..... 百度搜索毫无头绪,最后FQgoogle,找到这篇文章http://www.voidcn ...

Java页面中文编码要转换两次encodeURI

1.js文件中使用encodeURI()方法. login_name = encodeURI(encodeURI(login_name)); 2.action中URLDecoder解码 loginNa ...

ubuntu下怎么给普通用户赋予sudo权限

ununtu系统安装过程中,系统会提示建立一个默认用户,比如用户名为:zhuhui.这个默认用户具有一定的管理功能,即可以通过sudo命令执行root权限的操作.由于Ubuntu系统默认不允许通过ro ...

[2015hdu多校联赛补题]hdu5299 Circles Game

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5299 题意: 在欧几里得平面上有n个圆,圆之间不会相交也不会相切,现在Alice和Bob玩游戏,两人轮 ...

CentOS 6.5 安装Nginx 1.7.4

一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.openssl-devel.pcre-devel和zlib ...

windows live writer向cnblog发布文章设置(转)

Windows Live Writer是非常不错的一个日志发布工具,支持本地写文章,非常方便将word 中内容,包括图片进行处理,有点感觉相见恨晚. Live Writer最新版本下载地址是什么? h ...

linux查看系统的日志的一些实用操作

last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f 指定记录文件. -n

[Swust OJ 1094]--中位数(巧用set,堆排序)

题目链接:http://acm.swust.edu.cn/problem/1094/ Time limit(ms): 1000 Memory limit(kb): 32768   中位数(又称中值,英 ...

Mvc 导出 Excel

Mvc 导出 Excel 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望 ...

C# 调用CMD执行命令行

这几天用c#做了一个项目,其中一个功能是要把生成的临时文件隐藏,同时,不能在屏幕上有调用CMD的痕迹,这里生成的临时文件的绝对路径为delfile为文件的绝对路径, 代码如下: private voi ...

linux脚本base64加密当时,【加密算法】Base64相关推荐

  1. js base64加密 java base64解密_JS base64 加密和 后台 base64解密(防止中文乱码)

    //UnicodeAnsi.js文件//把Unicode转成Ansi和把Ansi转换成Unicode function UnicodeChr() {return '00A4,00A7,00A8,00B ...

  2. linux系统base64加密算法,linux, base64加密解密

    一.base64加密 格式:base64 从标准输入中读取数据,按Ctrl+D结束输入.将输入的内容编码为base64字符串输出. 格式:echo "str" | base64 将 ...

  3. 常用的加密算法(md5,sha1,base64加密解密)使用

    import org.apache.commons.codec.digest.DigestUtils; import java.util.Base64; import java.util.Scanne ...

  4. js怎么实现对html代码加密解密,JS实现Base64加密解密

    JavaScript实现Base64加密解密.Base64与其说是加密算法不如说是方便数据传输而生的数据转换手段. 测试代码:html> test .resource_enc, .resourc ...

  5. base64加密原理及python、C语言代码实现

    base64算法 base64加密原理 关于base64,百度百科给出的解释是: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制 ...

  6. java 判断是否base64_判断一个字符串是否进行了base64加密

    通过长度以及base64加密方法(从base64组成入手) /** * 判断是否进行base64加密 * @param str * @return */ public static boolean c ...

  7. 改变base64加密图片的大小

    1.添加依赖 <!-- 图片缩略图 --><dependency><groupId>net.coobird</groupId><artifactI ...

  8. Java base64加密解密 两种实现方式

    1.为什么要使用Base 64 Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输. 由于一些二进制字符在传输协议中属于 控制字符,不能直接传送,所以需要转换一下才可以. ...

  9. Javascript Base64加密与解密

    Base64加密与解密 Base64.js function Base64() {// private property_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  10. java base64 加解密_java Base64加解密

    import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class Base64Util { public stati ...

最新文章

  1. 转:【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
  2. Yearning v1.4.2 发布,SQL审核平台
  3. Lintcode--1(463)--整数排序
  4. 1964年诞生的第一代电子计算机,世界第一台电子计算机诞生的年份是?
  5. 文件字符输入流的使用 FileReader java
  6. Activity间的转场动画(overridePendingTransition)
  7. Android 系统(229)---Android与h5交互专题
  8. 本周没有学习,估计用脑过度...
  9. Windows Server 2008 启用公共文件夹共享
  10. 月薪多少最幸福,离你有多远?
  11. rabbitmq使用_RabbitMQ 简介以及使用场景
  12. anaconda的使用
  13. doip 源码_DoIP技术(一)
  14. python if .for 等函数
  15. 在ZYNQ7000嵌入式操作系统Debian8下源代码编译安装并配置Ros环境(Kinetic版本)
  16. 券商也“网红”,证券行业IT服务运维发展按下“快进键”
  17. web前端面试题之肉(css)
  18. Flask入门(4):CBV和FBV
  19. pytorch_lesson13.2 模型拟合度概念介绍+模型欠拟合实例+单隐藏层激活函数性能比较+相同激活函数不同隐藏层数结果对比+神经网络结构选择策略
  20. 初识go-micro

热门文章

  1. onu光功率多少是正常_熔融拉锥型(FBT) VS平面波导型(PLC)光分路器,如何选择?...
  2. 在linux下运行qiime,科学网—QIIME2在Linux环境下使用遇到的问题 - 肖斌的博文
  3. Spring 环境搭建与IOC HelloWorld
  4. Java序列化后isXXX变量没有了
  5. mysql用shell建100多字段表并导入
  6. Android简单的TXT文件存储
  7. 使用CCDirector的notificationNode来创建独立的信息提示层
  8. JS【知识点】------(转)
  9. C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)
  10. 初学者phthon笔记(异常处理)