2019独角兽企业重金招聘Python工程师标准>>>

不了解的人突然看到window对象的atob和btoa 函数,估计会认为哪个臭小子添加全局函数了。

你如果告诉他这是原生函数,他一定会怒骂:哪个脑残给api起个这样的名子。

你能猜出来这两个函数是干什么的吗?

实验一下:

直观看有这几点:

  1. “123” 经过  atob 变短了,  结过btoa 变长了 。
  2. 先atob 后btoa,字符变了 。 但是先btoa,后atob,字符不变。

奇怪吗,根本不奇怪,解释一下它们的用途就明白了。

引用MDN:

Base64是一组相似的二进制到文本(binary-to-text)的编码规则,使得二进制数据在解释成radix-64的表现形式后能够用ASCII字符串的格式表示出来。

atob() 函数能够解码通过base-64编码的字符串数据。相反地,btoa() 函数能够从字符串或二进制数据创建一个base-64编码的ASCII字符串。

简单一句:Base64编码将数据转为“安全字符”用于传输,编码会使内容变长1/3!

btoa就是进行Base64编码,atob是解码。

有问题就是:它不支持Utf-8中的所有字符,会有异常。解决方案:

https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

但我试验更简单的是:

unescape(atob( // 解码btoa( escape( "12中国✓ à la mode"))  // 编码)     )

我现在决定在项目里,用它们来加密,解密存入localStorage中的字符串了。

安全吗 ?知道了肯定不安全,但只要别人看一眼是乱码就OK了。

转载于:https://my.oschina.net/u/1540190/blog/2962232

atob和btoa的趣谈相关推荐

  1. 趣谈网络协议笔记-二(第十九讲)

    趣谈网络协议笔记-二(第十九讲) HttpDNS:网络世界的地址簿也会指错路 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 引用 dns缓存刷新时间是多久?dns本地缓存时间介绍 - 东大网管 ...

  2. 趣谈网络协议笔记-二(第十八讲)

    趣谈网络协议笔记-二(第十八讲) DNS协议:网络世界的地址簿 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 正文 DNS用于域名解析,但也不仅仅是用于域名解析,不仅仅是将域名转换成IP. 在 ...

  3. 趣谈网络协议笔记-二(第十七讲)

    趣谈网络协议笔记-二(第十七讲) P2P协议:我下小电影,99%急死你 自勉 逃离舒适区! 正文 一. P2P协议 整个篇章讲的就是这两个协议之间的区别.P2P协议就是迅雷下载数据时所用的协议, 众所 ...

  4. 趣谈网络协议笔记-二(第十六讲上)

    趣谈网络协议笔记-二(第十六讲上) 流媒体协议:如何在直播里看到美女帅哥? 自勉 给岁月以文明,而不是给文明以岁月!--<三体> 在触不到的獠牙上点火--就像不必仰望那星星就能够解决--就 ...

  5. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  6. 趣谈网络协议笔记-二(第十二讲)

    趣谈网络协议笔记-二(第十二讲) TCP协议(下):西行必定多妖孽,恒心智慧消磨难 前言 哈哈哈,越当我看刘超的通俗讲解,我就越感觉自己的无能.每次当我看了讲解之后,每次当我感觉到这个东西原来是这么简 ...

  7. 趣谈网络协议笔记-二(第十一讲)

    趣谈网络协议笔记-二(第十一讲) TCP协议(上):因性恶而复杂,先恶后善反轻松 自勉 我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行. 强大是和平的前提,而善良不是. 前言 今天回到家里已经是 ...

  8. 趣谈网络协议笔记-二(第十讲)

    趣谈网络协议笔记-二(第十讲) UDP协议:因性善而简单,难免碰到"城会玩" 自勉 如果手上没有剑,我就无法保护你.如果我一直握着剑,我就无法抱紧你.--<Bleach> ...

  9. 趣谈网络协议笔记-二(第七,八,九讲)

    趣谈网络协议笔记-二(第七,八,九讲) 勉励 人生而自由,却无往不在枷锁(牢笼)之中. ------卢梭@<社会契约论> 为那些有形的牢笼感到庆幸吧. 为自己出生于这个时代感到庆幸吧,因为 ...

最新文章

  1. 区块链中的数学 - EdDSA签名机制
  2. 高并发高性能服务器是如何实现的
  3. HTTP---Cookie
  4. activeMQ 的kahadb存储引擎分析
  5. C#动态调用WCF接口,两种方式任你选。
  6. 周鸿祎:通过免费吸引用户不是万能 还需回归商业本质
  7. CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
  8. php mysql注入测试工具_PHP+MYSQL 【注入漏洞】攻防测试
  9. 再也不用花一天时间做ppt了
  10. ZYNQ图像处理项目——帧差法运动目标跟踪
  11. cdr 表格自动填充文字_372集最新CDR全套教程:视频+素材+案例,从新手到大师只要一个月...
  12. 当独孤求败遇见东方不败
  13. Received empty response from Zabbix Agent at [agent]. Assuming that agent dropped connection because
  14. MySQL DQL操作之基础查询
  15. linux下deb安装包的运行
  16. python中setattr(),getattr(),hasattr()函数的使用
  17. 计算机色温调整,如何调节计算机屏幕的色温
  18. 关于理性形象的塑造——歇洛克·福尔摩斯眼中的世界
  19. 500 – 内部服务器错误_无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源...
  20. notion函数_用好这些实用模板,把 Notion 打造成全能助理

热门文章

  1. 递归Java_递归的Java实现
  2. 简单 局部 整体光照模型计算机图形学,计算机图形学北大光照模型.ppt
  3. 树莓派要mysql的密码_树莓派raspberry Pi 3B+系统中安装mysql过程中不提示输入密码,安装完后如何设置密码...
  4. 帝国cms 未审核 showinfo.php,帝国CMS批量修改文章未审核状态及批量修改上线时间...
  5. 关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮
  6. vue底部选择器_Vue组件-极简的地址选择器
  7. C++primer第十章 泛型算法 10.4 再探迭代器 10.5 泛型算法结构
  8. 英语口语 week12 WednesDay
  9. 10岁起编程,并不认为自己是“黑客”
  10. 英特尔预计5年内将成智能手机芯片大厂