atob和btoa
它们是 JavaScript(也就是网页前端脚本)自带的两个专门用来处理 Base64 编码和解码 的基础函数
btoa():负责“编码”(把明文变乱码)
atob():负责“解码”(把乱码变回明文)

const correctPassword = "Q1RGe2Vhc3lfYmFzZTY0fQ==";
const:在 JavaScript 中用来声明一个“常量”(也就是设定好之后不能再改变的值)。
correctPassword:这是给这个常量起的名字,意思是“正确的密码”。
"Q1RGe2Vhc3lfYmFzZTY0fQ==":这是赋给这个常量的值。这串看起来像乱码的字符,其实是一段经过 Base64 编码的文本。系统把它当作比对的标准答案写死在了代码里。
const enteredPassword = document.getElementById('password').value;
document.getElementById('password'):这句指令会让浏览器在网页(HTML)里寻找一个 ID 为 password 的元素。也就是你在网页上看到的那个密码输入框。.value:意思是提取出这个输入框里当前填写的文字。整句话的意思是:把你刚刚在网页密码框里敲进去的字符拿出来,存放到一个叫做 enteredPassword(输入的密码)的常量里。
if (btoa(enteredPassword) === correctPassword) {
if (...):这是一个条件判断语句,意思是“如果括号里的条件成立,就执行后面的操作”。
btoa():这是 JavaScript 自带的一个内置函数,它的作用是将普通的文本字符串转换为 Base64 编码格式===:意思是“严格等于”,两边的内容必须一模一样才算成立。
整句话的完整逻辑是:把你刚才输入的密码(enteredPassword)丢进 btoa() 函数里变成 Base64 格式,然后看看它等不等于第一行设定好的那个目标答案(correctPassword)。
什么是 Base64
简单来说,Base64 是一种“翻译规则”,而不是“保密规则”。
计算机底层处理的所有文件(图片、视频、程序)全都是 0 和 1 组成的二进制数据。但在早期,很多网络协议(比如发电子邮件)只支持传输普通的英文字符。如果强行发送原本的二进制数据,有些特殊的控制字符在传输过程中会被系统误读,导致文件损坏。
为了解决这个问题,发明了 Base64。它的名字顾名思义:基于(Base)64个可打印字符。它会把任何数据都“翻译”成由大小写字母 A-Z、a-z、数字 0-9,再加上 + 和 / 这 64 个基本字符组成的字符串。末尾有时候还会加上 = 作为填充。
思考:为什么 Base64 完全不能用来做“加密”?