受
有道难题中许多答复者的启发,我决定对base64编码也研究一下,因为看起来这个问题在Ruby下是相当的easy。
这种做法的问题在于:诸如汉字这样的字符不能还原。。代码如下:
BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
def enBASE64(s)
s.unpack("B*")[0].scan(/\d{1,6}/).map!{|x|
if x.size==6
BASE[("0"*2+x).to_i(2)].chr
elsif
m=BASE[("0"*2+x.ljust(6,"0")).to_i(2)].chr + ("="*((x.size)%3))#这里主要是填充'='
m
end
}.join
end
p enBASE64("if not this is love")
def deBASE64(s)
i=s.count('=')
s.tr!('=','')
t=s.split(//)
t.map!{|x|
g="%08b" %BASE.index(x)
if i==0 || x!=t.last
g[2,6]
else
i==1?g[2,4]:g[2,2] #根据填充符号(=)的数量,提取相应的长度
end
}
t.join.scan(/\d{8}/).map{|x|x.to_i(2).chr}.join
end
p deBASE64("aWYgbm90IHRoaXMgaXMgbG92ZQ==")
是不是很简单,其实用
def encode64(bin)
[bin].pack("m")
end
也可以很简单的实现,同样的,解密也很简单。但是其中隐藏了许多的细节,我们并不清楚,对于我们掌握base64编码的原理并没有帮助。自己写一个的话,可以了解其中的奥秘。
主要参考资料:
http://en.wikipedia.org/wiki/Base64
矛与盾的较量(4)——奇妙的Base64编码
http://tools.ietf.org/html/rfc3548#section-3
分享到:
相关推荐
易语言汇编base64编码源码,汇编base64编码,Base64Encode,Base64Decode
labview 图片缩放 base64编码base64解码
需要一个二进制与BASE64相互转换的函数,从网上找...示例中提供二进制与16进制字符串转换函数ConvertHexStrToBin与ConvertBinToHexStr,二进制与BASE64编码转换函数Base64Encode与Base64Decode,在VC6下编译通过可用。
算法是查表方式实现,优点:性能好、缺点:码表有几KB的内存占用。跟精易模块的BASE64进行简单测试对比,没啥毛病... 1) 添加 BASE64解码2_ASM 支持未补码的BASE64编码(删除了对标准BASE64编码长度的检测,可能存在B
提供一种Base64编码,并输出UTF-8格式的BASE64编码方式。本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D',...
可以实现将文件转换为Base64编码。可以实现将文件转换为Base64编码。
Hex十六进制/Base64编码转换器,可对字符串文本进行十六进制及Base64编码与反编码
Delphi进行Base64编码后,如果使用javascript解码,会出现如下问题: 1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先...
标注base64编码方式 Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。 关于这个编码的规则...
Base64编码与图片互转
从github上找到的base64编码解码库,C语言版,修改了一个形参从而能获取解码后的数据长度,内附使用说明
【程序老媛出品,必属精品,亲测校正,...资源名:vb 图片转base64编码 程序源码 资源类型:程序源代码 源码说明: 基于vb编写的实现图片转base64编码程序源码 非常适合借鉴学习 适合人群:新手及有一定经验的开发人员
1.Java生成二维码示例 2.图片保存到本地或生成Base64编码 3.Base64编码生成图片
Base64编码解码工具.exe
完美支持中文 base64 编码与解码 目前速度最快 效率最高的编码与解码
易语言 base64编码转图片 如何 提高转换速度.zip
我在网上找了半天的java、js的base64编码解码结果没有,只好自己写了,js一个文件,java一个文件,调用里面是使用方法
c++ base64 编码
实现BASE64编码和解码程序, 在类中实现如下函数并运行测试正确。 BASE64编码算法请在网上查询。 public String encode(byte[] data) { } public byte[] decode(String b) { }