Base64 原理 及 Base64 隐写
2021/10/20 23:16:13
本文主要是介绍Base64 原理 及 Base64 隐写,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Base64由 a-z 、A-Z 、+ 、/ 、=组成,= 为填充字符。
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
Base64把三个8bit的字节转换成四个6bit的字节。例如:
倘若字符串的长度不为3的倍数时,则在该字符串二进制后添加 0 使字节数为6的倍数,然后在编码后的字符串后添加 1-2 个 = 。例如:
而Base64隐写就是利用红框中的这几位
因此使用 "QnZibVY= " 或是 "QnZibVa=" 解密均为 "BvbmV"
解密代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 10000 int main() { int n,m,p=0,k,t,c[MAX]; char a[MAX],b[100]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; freopen("d:\\stego.txt","r",stdin); while (scanf("%s%*c",a) !=EOF ) { m=strlen(a); if (a[m-1]!='=') continue; if (a[m-2]=='=') { for (n=0;n<64;n++) if (b[n]==a[m-3]) break; k=32; while (k!=0) { if (k<=n) { n-=k; if (k<16) c[p++]=1; k/=2; continue; } if (k<16) c[p++]=0; k/=2; } } else { for (n=0;n<64;n++) if (b[n]==a[m-2]) break; k=32; while (k!=0) { if (k<=n) { n-=k; if (k<4) c[p++]=1; k/=2; continue; } if (k<4) c[p++]=0; k/=2; } } memset(a,0,sizeof(a)); } for (n=0;n<p;n+=8) { for (m=0,t=128,k=0;m<8;m++) { if (c[n+m]==1) k+=t; t/=2; } printf("%c",k); } return 0; }
以攻防世界 MISC 中 新手练习区 base64stego 为例:
首先得到一个伪加密的压缩包,使用WinRAR 工具选项卡中 修复文件解开伪加密得到 stego.txt 文件 stego.txt 文件打开后均为base64
解密后发现为base64隐写的介绍 使用base64隐写解码程序
把 stego.txt 使用解密代码解开得到
这篇关于Base64 原理 及 Base64 隐写的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南