zoukankan      html  css  js  c++  java
  • js node python btoa atob

    https://mp.weixin.qq.com/s/4SvDiYVXj8a6BbdRq0BQyg

    btoa和atob是window对象的两个函数,其中btoa是binary to ASCII,用于将binary的数据用ASCII码表示,即Base64的编码过程,而atob则是ASCII to binary,用于将ASCII码解析成binary数据,即Base64的解码过程[1]  

        

        ASCII码大家基本都知道,这里讲下binary是什么。

       binary 是JS字符集的另外一个子集,它类似于 ASCII 字符集,但是字符的码点(charCode)不再限制到 127, 它包含了255 以内的字符。binary string设计的目的不是用于代表字符, 而是代表二进制数据。由 binary string 代表的二进制数据大小是原始数据的两倍,然而这对于最终用户是不可见的, 因为JavaScript strings 的长度是以2字节为单位进行计算的。比如, "Hello world" 这个字符串属于 ASCII 子集, 而 ÀÈÌÒÙ 不属于ASCII码[2],但属于binary。

        所以btoa和atob其实还涉及了编码问题,我们只需要找出相同编码进行替换即可。在node.js环境中,提供了一个 Buffer 类,用于操作二进制及Base64转码。而在Python环境中,有一个 Latin1 编码[3]与JS的binary相同,因此可以构造代码了。

    代码实现

    一、node.js环境

        1.直接安装btoa-atob库(不推荐)

        2.通过Buffer类实现转换

      

    // atob
    var s = new Buffer.from("待解码的字符", "base64").toString("binary")
    // btoa
    var s = new Buffer.from("待编码的字符", "binary").toString("base64")



    二、Python环境

     

        通过Latin1编码进行转换

    import base64
    # atob
    s = base64.b64decode("待解码的字符".encode("utf8")).decode("latin1")
    # btoa
    s = base64.b64encode("待编码的字符".encode("latin1")).decode("utf8")

    https://mp.weixin.qq.com/s/4SvDiYVXj8a6BbdRq0BQyg

  • 相关阅读:
    游标
    mobaxterm安装与使用(root_35/37/36/121)
    美团笔试--修改矩阵
    美团笔试1--螺旋矩阵
    assert函数
    2019年头条笔试--围坐分糖果
    邻值查找——stl函数lower_bound和upper_bound的使用
    动态规划练习1--腾讯暑期实习正式批
    Windows 7下硬盘安装CentOS6.4的解决方法
    Sublime Text 3 的一些基本使用方法和配置
  • 原文地址:https://www.cnblogs.com/angdh/p/14397622.html
Copyright © 2011-2022 走看看