首页 > 其他分享 >【攻防技术技术】-- js+base64

【攻防技术技术】-- js+base64

时间:2024-04-05 19:22:17浏览次数:20  
标签:编码 Base64 -- base64 btoa js 字符串 ASCII

全文用时:10min

JavaScript中,btoaatob 是两个用于 Base64 编码和解码的函数。
下面是对这两个函数以及 Base64 的解释和代码示例:

btoa 函数:btoa(表示 base64 encode)将字符串转换为 Base64 编码的数据。它接受一个 ASCII 字符串参数,并返回经过 Base64 编码的字符串。
b 表示 "binary",它指示函数处理二进制数据的能力。
toa 是 "to ASCII" 的缩写,表明函数将数据从一种格式转换为 ASCII 字符串。

代码示例

const originalString = 'Hello, World!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出:SGVsbG8sIFdvcmxkIQ==

btoa处理中文会报错,解决方案是先编译:

var str = '?title=标题&url=https://www.baidu.com'
var strA = window.btoa(encodeURIComponent(str))
var strB = decodeURIComponent(window.atob(strA))
console.log(strA) // 输出:'JTNGdGl0bGUlM0QlRTYlQTAlODclRTklQTIlOTglMjZ1cmwlM0RodHRwcyUzQSUyRiUyRnd3dy5iYWlkdS5jb20='
console.log(strB) // 输出:'?title=标题&url=https://www.baidu.com'

注意: base64 转换时去除 "data:image/png;base64,", 只要后面的文件流, 否则 atob 报错

atob 函数:atob(表示 base64 decode)将已经进行 Base64 编码的数据解码为原始字符串。它接受一个 Base64 编码的字符串参数,并返回解码后的 ASCII 字符串。
a 表示 "ASCII",表明函数可以将 ASCII 字符串转换回原始格式。
tob 是 "to binary" 的缩写,表示函数将数据从 ASCII 字符串转换为二进制格式。

代码示例

const encodedString = 'SGVsbG8sIFdvcmxkIQ==';
const originalString = atob(encodedString);
console.log(originalString); // 输出:Hello, World!

Base64 的名称源自它使用了 64 个字符的 ASCII 子集来表示二进制数据。具体来说,Base64 使用了大小写字母 A-Z、a-z、数字 0-9 以及两个额外的特殊字符 "+" 和 "/"(有时还会有 "=" 符号用于填充)。

Base64 编码原理很简单:每 3 个字节(24 位)的数据被分割成 4 个 6 位的组合,然后再转换成对应的 ASCII 字符。如果原始数据的字节数不是 3 的倍数,则会在末尾添加一个或两个填充字符(通常是 "=")。

解码时,将 4 个 Base64 字符组合成 3 个字节的形式。

Base64 编码的优点包括:

a. 可读性:Base64 编码使用 ASCII 字符,因此可以在文本环境中容易处理和传输。

b. 广泛支持:Base64 编码和解码算法在各种编程语言和网络传输协议中都有广泛支持,使得数据可以在不同平台之间进行可靠和兼容的传输。

c. 安全性:由于 Base64 编码后的数据只包含 ASCII 字符,而不是原始二进制数据,因此可以安全地传输(例如,通过电子邮件)而无需担心字符集或二进制数据导致的问题。

需要明确的是,Base64 编码不是加密算法。它只是一种将二进制数据表示为文本的转换方法,并没有提供任何数据保护或隐私保密性。

总之,Base64 编码在计算机领域中广泛应用于网络传输、数据存储和数据处理等场景,旨在解决非 ASCII 字符的可靠处理和传输问题。

原创:干货食堂

标签:编码,Base64,--,base64,btoa,js,字符串,ASCII
From: https://www.cnblogs.com/o-O-oO/p/18116084

相关文章

  • POI之EXCEL导出封装(未测试)
    基础类描述ExcelWriter(导出工具类)Query(通用查询)Consumer(函数参数)SpringBeanUtil(获取bean)代码ExcelWriterimportcn.hutool.core.collection.CollUtil;importcn.hutool.core.collection.ListUtil;importcn.hutool.core.util.PageUtil;importcn.hutool.json.JSONObj......
  • 【安全技术系列】白盒测试方法+demo演示
    首先,说一下什么是单元测试。单元测试是一种软件测试类型,其中测试用例针对单个代码单元(例如函数、类或模块)进行设计和执行。单元测试旨在验证代码单元的正确性、隔离性和健壮性。什么是白盒测试:白盒测试是一种软件测试技术,其中测试人员具有对被测代码的内部结构和实现细节的完全......
  • 模拟赛总结
    23-24term19.17最可惜的是t4:把b放在a后面就形成了一个长为2*m的LIS。我想到了LIS但是一直觉得无法保证长度为m所以直接hack掉自己的想法。。(虽然LIS时间复杂度10^7理论是可以过的。)太可惜了。当然也可以搜索剪枝(你是傻子你不会dfs你别想了)T2:转移方程脑子炸了想了好久,然后还没......
  • easyExcel通用导出(非注解,多线程)
    1、基础类描述ExcelWriter(导出工具类)Query(通用查询)Consumer(函数参数)SpringBeanUtil(获取bean)2、代码ExcelWriterimportcn.hutool.core.collection.CollUtil;importcn.hutool.core.collection.ListUtil;importcn.hutool.core.util.PageUtil;importcn.hutool.core.u......
  • @babel/plugin-transform-runtime 这个包的使用场景是什么
    @babel/plugin-transform-runtime是Babel转译工具的一个插件,用于处理JavaScript代码中的新语言特性和API。它的使用场景主要包括以下几个方面:避免全局污染:当使用Babel转译包含新特性的代码(如箭头函数、解构赋值、模板字符串等)时,Babel通常会生成辅助函数(helperfunct......
  • @Retention(RetentionPolicy.RUNTIME)
    注解按生命周期来划分可分为3类:1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,j......
  • ARM架构的异常模型
    一、异常级别1、异常级别0(EL0)       用户模式,是四个异常级别中权限最低的一个。    目标软件:应用程序代码    设计用途:运行绝大多数终端用户的软件,如文档编辑器、游戏和通讯应用。这些应用程序运行在一个受限的环境中,以减少它们对系统安全性和稳......
  • 为什么可以使用TrustZone和CCA来构建TEE
    前言    使用ARMTrustZone和CCA来构建可信执行环境基于这两种技术提供的安全特性和目标。它们各自在不同层面提供硬件级别的安全保障和隔离,能够有效地保护代码和数据在执行时不被操作系统或其他应用访问,即使是在有高级权限的软件也无法突破这一保护。这种安全级别对......
  • 全球变暖蓝桥杯2018省赛真题
    全球变暖蓝桥杯2018省赛真题DFS大法全球变暖#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongboolflag;chara[1010][1010];intcnt,n,ans=0,pre_ans=0,d[4][2]={1,0,-1,0,0,1,0,-1};voiddfs(intx,inty){if(x>=n||x<0||y>=n||y<0||a......
  • Python环境下基于离散小波变换的信号降噪方法
    Mallat创造了小波分析中的经典理论之一,即多分辨率分析的概念。后来,在Mallat与Meyer的共同努力之下,他们又在这一理论的基础上发明了离散小波变换的快速算法,这就是Mallat塔式算法,这种算法可以大量减少计算时间。在之前的二十年之间,小波分析方法在自身不断发展壮大的同时,也被许多......