Base64加密算法学习

NCTF的wp考完高数线代就即刻补全(认真脸)

概述

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于\(\log_{2}64=6\),所以每6 bit为一个单元,对应某个可打印字符。3个字节相当于24 bit,对应于4个Base64单元,即3个字节可由4个可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同(一般是+/)。

实现原理

一份常见的Base64索引表为:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/,每一个可打印字符分别对印着数值0-63。

在进行Base64加密时,每次取出明文3字节的数据,先后放入一个24 bit的缓冲区中,优先占据高位。若数据不足3字节,则剩余的bit用0填充。这之后,每次从缓冲区提取6 bit,按照其二进制对应的数值选择索引表中的可打印字符进行加密。循环该操作直到明文被完全提取。

特别地,当缓冲区中某一个Base64单元的bit全为0时,令该单元编码的字符为'='。这也是为什么经过Base64加密的密文的一个显著特征是末位可能会出现1到2个'='字符。

一次手动模拟

没有用0填充的情况

我们令明文为"msg"

明文 m s g
ASCII 109 115 103
二进制编码 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1
索引 27 23 13 39
Base64加密 b X N n

推荐这些文章:

Base64加密算法

java的Base64加密与解密
import java.util.Base64;

public class Hello {
public static void main(String[] args){
String name = "哈喽啊";
//base64,加密
Base64.Encoder encoder = Base64.getEncoder();
String res = encoder.encodeToString(name.getBytes());
System.out.println...

Java加密算法-Base64加密

base64算法是基于64个字符的一种替换算法。
base64加密的产生式电子邮件的“历史问题”——邮件只能传输ASCII码。
base64加密的应用场景:email、密钥、证书文件。
该算法可以由3种方式实现:JDK、Bouncy Castle、Commons Codec。
============================================================================Base64加密工具类:

import org.apache.commons.codec.binary.Base64;

public class SecurityB...

python学习-Day22

目录今日内容详细hashlib加密模块什么是加密加密算法加密的使用基本使用指定算法(md5)将明文数据传递给算法对象获取加密之后的密文数据加密补充加盐处理动态加盐加密应用场景logging模块日志等级logging模块基本使用

今日内容详细

hashlib加密模块
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
也就是我们说的加密
什么是加密
'''
将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂)
密文...

文章标题:Base64加密算法学习
文章链接:https://www.dianjilingqu.com/4013.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>