美文网首页『ios』进阶
『ios』Base64加密原理 流程

『ios』Base64加密原理 流程

作者: butterflyer | 来源:发表于2018-08-06 17:08 被阅读5次

    base64还有其他的各种加密这几年也用了不少了,其实只是用了,为了完成需求而用了。
    这些都不能解决实际问题,实际问题是面试的时候没人会问你怎么用,他们会问你了解吗,原理说下,如果你答不上来,
    及时你用过,也是0分。

    原理:

    它是用64个可打印字符表示二进制所有数据方法。
    由于2的6次方等于64,所以可以用每6个位元为一个单元,对应某个可打印字符。
    三个字节有24个位元,就可以刚好对应于4个Base64单元,即3个字节需要用4个Base64的可打印字符来表示。
    在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中一般有所不同。
    但是,我们经常所说的Base64另外2个字符是:“+/”。

    image.png

    上面这张图就是十进制数据对应的字符。
    加密的时候我们总是会看到‘===’,这个符号的出现,其实这个只是补位的作用的,

    base64凑零的同时,还要满足凑出来的位数是8的倍数,不然就加一个或者两个特殊的六位  =  符号。
    为什么是一个或者两个=符号呢? 因为多个8位转为6位 只会出现 剩余 2位,4位的情况,剩余2位 只需要一个 表示六位的 = 便可变为8的整数;而剩余4位 需要两个表示6位的 = 便可以变成16 是8的整数。然后在解密的时候不解析 =即可
    

    需要凑8位的原因。

    数需要凑成8的倍数,是因为base64主要用于加密后的数据传送,而在传送机制中都认为传送的最小单位是按照字节算的,所以不能出现不是位总数不是8的倍数的情况,在接收到数据后,按顺序将6位的base64直接按照顺序解密成字节就完成解密了
    
    image.png

    看上面这段转换,二进制不足6位补零,不足8位补===,然后把6位的二进制数转为十进制,找对应的字符,就完成转换。

    ios自习室欢迎进入,一起学习一起进步。

    IMG_7291.JPG

    相关文章

      网友评论

        本文标题:『ios』Base64加密原理 流程

        本文链接:https://www.haomeiwen.com/subject/ifugvftx.html