1. Base64 编解码介绍

Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’。

为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

2. 一个示例

内存中一个字符占 8 位(ASCII 码形式);

s13进行 Base64 编码,

  • (1)ASCII 码形式:s ⇒ 115(01110011),1 ⇒ 49(00110001),3 ⇒ 51(00110011);

  • (2)连成串,6 个一组,共 4 组;

    011100 110011 000100 110011

  • (3)查表,分别对应,28(c),51(z),4(E),51(z)

3. 迅雷链接与磁力链接

很多下载类网站都提供“迅雷下载”的链接,其地址通常是加密的迅雷专用下载地址。其实迅雷的“专用地址”也是用 Base64”加密”的,其过程如下:

  • 一、在地址的前后分别添加 AA 和 ZZ
  • 二、对新的字符串进行 Base64 编码

另: Flashget的与迅雷类似,只不过在第一步时加的“料”不同罢了,Flashget在地址前后加的“料”是 [FLASHGET]
而QQ旋风的干脆不加料,直接就对地址进行Base64编码了

磁力链接:magnet:?xt=urn:btih:520e72e766b002b175b8fbad57ec745071f66282

迅雷地址:
thunder://QUFtYWduZXQ6P3h0PXVybjpidGloOjUyMGU3MmU3NjZiMDAyYjE3NWI4ZmJhZDU3ZWM3NDUwNzFmNjYyODJaWg==

二者看似毫无一致性可言,然而在 Base64 编码面前,原形毕露:

>> import base64
>> s = 'magnet:?xt=urn:btih:520e72e766b002b175b8fbad57ec745071f66282'
>> s = 'AA'+s+'ZZ'
>> base64.b64encode(s)
QUFtYWduZXQ6P3h0PXVybjpidGloOjUyMGU3MmU3NjZiMDAyYjE3NWI4ZmJhZDU3ZWM3NDUwNzFmNjYyODJaWg==# 对加料后的磁力链接进行 base64 编码,刚好得到迅雷链接

Base64 编码/解码器相关推荐

  1. Java、JS、OC、Flutter的Base64编码和解码

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 本文章将描述在 Jav ...

  2. Java实现Base64编码和解码的方式

    Base64 编码是什么? Base64 是一种编码的方式, 并不是安全领域的加密解密算法. Base64 的目的是把一些二进制符转成普通字符, 方便在网络上传输. 因为有些系统只能使用ASCII字符 ...

  3. Java 8中的Base64编码和解码

    转自:https://juejin.im/post/5c99b2976fb9a070e76376cc Java 8会因为将lambdas,流,新的日期/时间模型和Nashorn JavaScript引 ...

  4. 密码学-编码算法:Base64编码原理和使用

    1.Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.Base64编码是从二进制到字符的过程,可用于在 ...

  5. Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式

    Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...

  6. Java中BASE64 编码

    2019独角兽企业重金招聘Python工程师标准>>> BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BAS ...

  7. js php base64,JavaScript实现Base64编码与解码的代码详解

    本篇文章给大家分享的是jJavaScript实现Base64编码与解码的代码详解,内容挺不错的,希望可以帮助到有需要的朋友 一.加密解密方法使用//1.加密 var str = '124中文内容'; ...

  8. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  9. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

最新文章

  1. java面试题:集合_Java:选择正确的集合
  2. 将x的二进制最后一位置为0
  3. visual报表服务器项目,为 Visual Studio ALM 创建报表服务器项目
  4. 如何卸载Adobe Premiere Pro CC 2017和Adobe Photoshop CC 2018
  5. 你知道什么是大数据的核心吗?
  6. 电脑误删分区如何恢复?图文详解
  7. 一个劣质无线鼠标接收器导致笔记本无线网络连接出现故障
  8. 从GitHub火到了CSDN,共计1658页的《Java岗面试核心MCA版》
  9. win10正确清理C盘
  10. 【闲谈】应聘时要问HR的7个问题
  11. Java引用包的方法
  12. 软负载均衡和硬负载均衡
  13. wordpress中Google Map V3 for IDN 插件的使用
  14. 上班族做什么副业赚钱?全面解析副业赚钱模式!
  15. 量子笔记:量子纠缠祛魅,贝尔纠缠态
  16. r420服务器安装系统,r420服务器bios设置
  17. [转载] DBA职业生涯规划:八步打造高级DBA专家
  18. 关于Java RDP协议实现远程桌面连接的开源项目properjavardp .
  19. axios接口报错-参数类型错误解决
  20. AT32 CAN应用问题说明

热门文章

  1. pdf 深入理解kotlin协程_协程初探
  2. Mongodb命令操作增删改查
  3. java多线程 run start_java多线程中run和start区别
  4. linux mysql配置修改_【Mysql】linux下mysql的配置修改
  5. C/C++文件操作效率比较——FILE/fstream
  6. 如何制作SCI论文中的Figure(三)
  7. python正则表达式 身份证_python3中6种常用正则表达式
  8. 关于conda-新手必读
  9. 替换分隔符 ^p, 或者是回车
  10. ATA接口寄存器描写叙述