base64加密,解密,encode,decode,编码详解+实现

-------------------------------------------欢迎查看字符编码【专栏】------------------------------------------------------------------
汉字编码之GBK编码【点击】                                              判断汉字正则表达式更严谨方法【点击
记事本输入“联通”俩字,关闭再打开乱码 【点击】              iPhone emoji问题牵出的Unicode代理区的思考【点击
Unicdoe【真正的完整码表】对照表【点击】                      开源工程ZipArchive,压缩中文文件名乱码问题【点击
base64加密,解密,encode,decode,编码详解+实现【点击】 
网络传输文本,urlEncode和urldecode的iOS实现【点击】 字符编码的奥秘utf-8, Unicode【点击
--------------------------------------------------------------------------------------------------------------------------------------------------

概述

        Base64是一种基于64(A-Z、a-z、数字0-9 ,‘+’,‘/’)个可打印字符,来表示二进制数据的表示方法,基本思想是把所有字符都转化到这64个打印字符,方便流通。

        由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME, 在XML中存储复杂数据.

      base64转换逻辑

        转换的时候(如下图1),将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6(因为2^6=64)个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。这么看来,跟URLEncode也很有相似之处啊

  • 编码“Man”
文本Man
ASCII编码7797110
二进制位010011010110000101101110
索引1922546
Base64编码TWFu

(图1)

        如下图2所示,如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

文本(1 Byte)A  
二进制位01000001                
二进制位(补0)010000010000            
Base64编码QQ  
文本(2 Byte)BC 
二进制位0100001001000011  xxxxxx
二进制位(补0)010000100100001100xxxxxx
Base64编码QkM 
(图2)

这么说base64都是4的倍数。

Base64索引表:

参考表
ValueChar ValueChar ValueChar ValueChar
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

ios上自己实现了一下,温习一下这个过程;http://download.csdn.net/detail/hherima/5179817


由于不知道怎么删除csdn上的资源,我又上传了一份资源,里面包含了uft-8的转码,unicode的转码,gbk转码


  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
ASP代码中的Base64加密解密工具可以通过以下步骤实现加密: 1. 获取要加密的字符串。 2. 将字符串转换为字节数组。 3. 使用ASP代码中的Base64编码函数对字节数组进行编码。 4. 将编码后的字符串作为加密结果返回。 解密: 1. 获取已经加密Base64字符串。 2. 使用ASP代码中的Base64解码函数将字符串解码为字节数组。 3. 将解码后的字节数组转换为字符串。 4. 将解密后的字符串作为解密结果返回。 示例代码如下: ``` ' 加密函数 Function Base64Encode(str) Dim bytes, enc ' 将字符串转换为字节数组 bytes = StrToByteArray(str) ' 使用Base64编码函数进行编码 Set enc = Server.CreateObject("System.Text.Encoding") Base64Encode = enc.EncodeBytes_64(bytes) End Function ' 解密函数 Function Base64Decode(str) Dim bytes, enc ' 使用Base64解码函数进行解码 Set enc = Server.CreateObject("System.Text.Encoding") bytes = enc.DecodeBytes_64(str) ' 将字节数组转换为字符串 Base64Decode = ByteArrayToStr(bytes) End Function ' 将字符串转换为字节数组 Function StrToByteArray(str) Dim i, bytes ReDim bytes(Len(str) - 1) For i = 1 To Len(str) bytes(i - 1) = Asc(Mid(str, i, 1)) Next StrToByteArray = bytes End Function ' 将字节数组转换为字符串 Function ByteArrayToStr(bytes) Dim i, str For i = LBound(bytes) To UBound(bytes) str = str & Chr(bytes(i)) Next ByteArrayToStr = str End Function ``` 使用时,可以调用`Base64Encode`函数进行加密,以及调用`Base64Decode`函数进行解密

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值