Base64加密与解密

Base64加密方式是将原文经过简单的字符转换,转换成不easy被肉眼看出的字符编码。Base64加密经常使用在HTTP环境下传递较长的标识信息确保不破坏HTTP的请求格式,Base64的加密原理是将3个8位二进制转换为4个6位二进制,不足6位时高位补0 。以确保其值为64个可能,这就是Base64来源。

例如以下图就是Base64标准中的编码表。

取个样例:

须要加密的原文是“ABC”这三个字母,通过ASCII表得到这个三个字母的值的二进制表示为(去查ASCII表):

字符A:01000001  (65)

字符B:01000010  (66)

字符C:01000011  (67)

所以须要加密的原文的码流为01000001 01000010 01000011,经过转换成4个6位二进制得到

010000  010100 001001  000011

然后高位补0得到的8位二进制得到

00010000   00010100    00001001    00000011

16                20                   9                   3          所相应的十进制为

Q                  U                    J                    D          Base64编码

由此能够看到。“ABC”经过Base64加密后变成了“QUJD”,从长度能够看出添加了1/4,从结果上来说。加密后的字符仅仅有64种可能。事实上想想,之所以会把8位转换成6位。也是这种道理。

毕竟2的6次方减1等于63!这也是Base64加密的原理。Base64解密的原理恰好是加密的反向过程,过程是可逆的。

当反向解码后就会得到原文。尽管Bae64加密的数据安全性不是非常高。可是肉眼上也不太easy看出来原文。发送Email时对内容的加密就是採用的Base64。这是有历史原因的。

下面两种情况

1、中文加密:仅仅加密一个中文汉字时。因为一个中文汉字是两个字节!所以从16位自己主动填充到24位bits。所得Base64加密结果是4个字节。

2、 原文(bits)%24 != 0 ,自己主动填充成24bits的整倍数。

关于Base64很多其它的使用方法这里就不用说了,详细的java代码实现见:http://download.csdn.net/detail/main_stage/7507185

时间: 2024-12-19 16:13:56

Base64加密与解密的相关文章

C#中的实现 base64加密和解密

首先是加密 byte[] bytes = Encoding.Default.GetBytes("要转换的字符"); string str = Convert.ToBase64String(bytes); 然后是解密 byte[] outputb = Convert.FromBase64String(str); string orgStr = Encoding.Default.GetString(outputb);   C#中的实现 base64加密和解密

JS URL 使用base64加密与解密

JS编码方式: <script type="text/javascript"> document.write(encodeURI("http://www.w3school.com.cn/My first/")+ "<br />")//编译 document.write(decodeURI("http://www.w3school.com.cn/My first/")+ "<br />

Java Base64加密、解密原理Java代码

Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为

js中实现base64加密、解密

//1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); //document.write(result); //2.解密 var result2 = base.decode(result); document.write(result2); //2.加密.解密算法封装: function Base64() { // private property _key

字符串base64加密、解密

//base64加密(字符串经过base64加密之后得到的新的字符串)NSData *data = [@"iOS Developer Tips" dataUsingEncoding:NSUTF8StringEncoding]; NSString *base64Encoded = [data base64EncodedStringWithOptions:0]; //base64解密(base64加密的字符串经过base64解密之后得到的新的字符串) NSData *nsdataDecod

base64 加密原理 解密原理

假设需要加密的字符串是Jasmine 具体转换步骤: 第一步 将待转换的字符串转为一个个字符第二步 计算每一个字符对应的ASCII码十进制第三步 计算出十进制对应的二进制,若不足8位,在前面添加0进行补全第四步 将8位的二进制码,按照6个6个一组划分,若不能整除6,在最末添加0补足6位第五步 计算对应的十进制编码第六步 按照base64表,查看对应的字符第七步 将加密后的字符3个3个分成一组,不足3位的添加=进行补全第八步 得到最终结果 同时得到base64位加密后的特征:长度是3的倍数只含有6

JS base64 加密和解密

/*** * 加密 base64encode(utf16to8(str)) * 解密 utf8to16(base64decode(str)) * * */ var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -

纯lua实现Base64加密与解密

--Lua--十进制转二进制 function dec_to_binary (data) local dst = "" local remainder, quotient --异常处理 if not data then return dst end --源数据为空 if not tonumber(data) then return dst end --源数据无法转换为数字 --如果源数据是字符串转换为数字 if "string" == type(data) then

AES,Base64加密,解密

using System.IO;using System.Security.Cryptography;using System.Text;using UnityEngine; namespace Web.Networking{ /// <summary> /// AES + Base64 双重加密. /// </summary> public class AesBase64Encrypt { static bool enable = false; /// <summary&g