b32/64encode详解

时间:2020-08-17 19:32:09 来源:

【摘要】 b32/64encode详解考必过小编为大家整理了关于b32/64encode详解的信息,希望可以帮助到大家!

b32/64encode详解

标签:bit   name   pre   pytho   bcd   return   class   ring   字符串   

以前只是用这些函数,从没想过这些编码的原理;还是因为一道ctf题让我好好的了解了一下这些编码方式!

一、b32encode

我们知道每个字节是8比特,b32encode将5个字节分成8块,每块前三位补0,从而将5个字节扩展为8个字节;那么扩展后的每个字节的值不超过32,与32个字符"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"对应,有时我们发现编码的字符串中还有"="这个字符,但是它是填充字符,以上就是b32encode;用Python写一个脚本来帮助理解:

from string import uppercase,digits
from base64 import b32encode

def my_b32encode(s):
    base=uppercase+digits[2:8]
    assert(len(s))==5
    bs=‘‘.join([bin(ord(x))[2:].rjust(8,‘0‘) for x in s])
    assert len(bs)==40
    sbs=[bs[5*ind:5*(ind+1)] for ind in range(8)]
    re=[base[int(x,2)] for x in sbs]
    return ‘‘.join(re)

if __name__==‘__main__‘:
    print my_b32encode(‘BITSC‘)
    print b32encode(‘BITSC‘)

二、b64encode

b64encode将3个字节分成4块,每块前两位补0,从而将3个字节扩展为4个字节;那么扩展后的每个字节的值不超过64,与64个字符 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/+"对应,同样地,"="作为填充字符,以上就是b64encode;用Python写一个脚本来帮助理解:

from string import uppercase,lowercase,digits
from base64 import b64encode

def my_b64encode(s):
    base=uppercase+lowercase+digits+‘/+‘
    assert len(s)==3
    bs=‘‘.join([bin(ord(x))[2:].rjust(8,‘0‘) for x in s])
    assert len(bs)==24
    sbs=[bs[6*ind:6*(ind+1)] for ind in range(4)]
    re=[base[int(x,2)] for x in sbs]
    return ‘‘.join(re)

if __name__==‘__main__‘:
    print my_b64encode(‘BIT‘)
    print b64encode(‘BIT‘)

b32/64encode详解

标签:bit   name   pre   pytho   bcd   return   class   ring   字符串   

以上就是b32/64encode详解的内容,更多资讯请及时关注考必过网站,最新消息小编会第一时间发布,大家考试加油!

上一篇      下一篇
前端相关推荐 更多>>
前端热点专题 更多>>
热点问答
国家公务员考试年龄限制是多少 公务员国考和省考考试内容有什么区别 函授大专学历能不能考公务员 国家公务员考试考点能自己选择吗 新闻学专业能报考2022年公务员考试吗 什么是联合培养研究生 什么是破格录取研究生 什么人不适合读研 研究生报名户口所在地填什么 研究生结业和毕业有什么区别
网站首页 网站地图 返回顶部
考必过移动版 https://m.kaobiguo.net