CTF-base64加解密
base64
是一種編碼方式。把3個8bit變成4個6bit。然後不足補0,符號是’=’. 然後還有一張表。
測試
ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=
輸出:
flag{THE_FLAG_OF_THIS_STRING}
程式碼
解密
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <map>
#include <vector>
#include <string>
using namespace std;
char str[1010];
char dict(int x,bool flag) {
if(x == 0) {
if(flag) return '=';
else return 'A';
}
else if(x < 26) {
return 'A' + x;
}
else if(x < 52) {
return 'a' + x - 26;
}
else if(x < 62 ){
return '0' + x - 52;
}
else if(x == 63) return '+';
else return '/';
}
char refdict(char x) {
if(x >= 'A' && x <= 'Z') {
return x - 'A';
}
else if(x >= 'a' && x <= 'z') {
return x - 'a' + 26;
}
else if(x >= '0' && x <= '9' ) {
return x - '0' + 52;
}
else if(x == '+') return 63;
else if(x == '/') return 64;
else if(x == '=') return 0;
}
int main() {
while(gets(str)) {
string ans = "";
int len = strlen(str);
for (int i = 0;i + 3 < len;i += 4) {
int num = 0;
for (int j = 0;j < 4;j ++) {
num = (num << 6) + refdict(str[i * 4 + j]);
}
string tmp = "";
for (int j = 0;j < 3;j ++) {
int val = num & 0x000000ff;
num >>= 8;
tmp = char(val) + tmp;
}
ans = ans + tmp;
}
cout << ans << endl;
}
}
加密
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <map>
#include <vector>
#include <string>
using namespace std;
char str[1010];
char dict(int x,bool flag) {
if(x == 0) {
if(flag) return '=';
else return 'A';
}
else if(x < 26) {
return 'A' + x;
}
else if(x < 52) {
return 'a' + x - 26;
}
else if(x < 62){
return '0' + x - 52;
}
else if(x == 63) return '+';
else return '/';
}
int main() {
freopen("in.txt","r",stdin);
while(gets(str)) {
cout << str << endl;
string ans = "";
int len = strlen(str);
int newlen = ((len + 2) / 3 ) * 3;
for (int i = len;i < newlen;i ++) {
str[i] = 0;
}
str[newlen] = '\0';
for (int i = 0;i + 2 < newlen;i += 3) {
int num = (int)str[i + 2] + (((int)str[i + 1]) << 8) + (((int)str[i]) << 16);
string tmp = "";
for (int j = 3;j >= 0;j --) {
int cur = num & 0x0000003f; //i * 24 + j * 6
tmp = dict(cur,i * 24 + j * 6 >= len) + tmp;
num >>= 6;
}
ans = ans + tmp;
}
cout << ans << endl;
}
}
相關推薦
CTF-base64加解密
base64 是一種編碼方式。把3個8bit變成4個6bit。然後不足補0,符號是’=’. 然後還有一張表。 測試 ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR3
JavaScript Base64加解密
style 應用 fun decode turn a-z abcde dex log Base64加密算法是網絡上最常見的用於傳輸8Bit字節代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細規範。Base64編碼可用於在HTTP環境下傳遞
Base64 加解密類的使用
create esc ble nba val sub break while one /** * Created by Administrator on 2017/12/2 0002. */import java.io.UnsupportedEncodingExceptio
python3中base64加解密
import base64 payload = "select * from workbasic" b =base64.b64encode(payload.encode('utf-8')).decode("utf-8") print(b) # 'c2VsZWN0ICogZnJvbSB3b3JrY
Java Base64 加解密
public class base64EncryAndDecry { public static final String CODES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; public sta
Base64加解密C++
BASE64.CPP #include "BASE64.h" static const CHAR* DATA_BIN2ASCII = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+
BASE64加解密
- JDK 自帶 - Commons Codec 地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi - Bouncy Castle 地址:https://www.bouncycastle.or
delphi MD5加密,BASE64加解密
hash 單元 ext 應該 form proc free 第三方 delphi MD5需要引入system.Hash,BASE64需要引入System.NetEncoding,這兩個單元應該只有高版本的DELPHI IDE才有(貌似XE5以上版本才有)。如果是D7的話,找
android中的MD5、Base64、DES/3DES/ADES加解密
tid log str dpa enc csdn 長度 ttext public MD5摘要算法: <span style="font-size:18px;
python3url編解碼base64編解碼ASE加解密
字元編解碼 Python3相對於Python2的一大改變就是,對預設字元型別進行了修改。Python2中定義字串預設為二進位制字串,強制加字首u的才是unicode字串;而Python3中字串預設為unicode,強制加字首b的才是二進位制字串。(也就是剛好反過來了) 這裡的二進位制字串:指
c語言通過openssl aes對稱加解密和base64編解碼將密碼儲存成密文
今天遇到這樣一個問題,將客戶端中的一個密碼儲存到檔案中以供下次使用,但是儲存的密碼不能直接儲存明文,需要進行加密處理,再三考慮之後,這個加密的過程需要雙向的可逆的過程,MD5等方式是不適用的,因為記住密碼意味著下次我還需要還原這個密碼進行使用,所以最後選擇了openssl的aes演算法,然而ae
資料加解密基礎知識介紹,及Java實現Base64加密
加密流程涉及的一些關鍵詞: 明文:準備加密的資訊 加密:把明文處理為密文的過程 加密演算法:具體實現明文轉為密文的演算法 加密金鑰:通過加密演算法進行加密操作需要的金鑰 密文:被加密的明文 解密:將密文轉為明文的過程 解密演算法:具體實現密文轉為明文的演算法 解
nodejs aes加解密128演算法,base64編碼
function encryption(data) { var iv = ""; var clearEncoding = 'utf8'; var cipherEncoding = 'base64'; var cipherChun
php base64編碼 加解密 手動實現
GB_2312 字符集是目前最常用的漢字編碼標準。在這個標準中,每個漢字用2個位元組來表示,每個位元組的ascii碼為 161-254 (16 進位制A1 - FE),第一個位元組 對應於 區碼的1-94 區,第二個位元組 對應於位碼的1-94 位。漢字的unicode 編碼
【JAVA】常用加解密演算法總結及JAVA實現【BASE64,MD5,SHA,DES,3DES,AES,RSA】
BASE64 這其實是一種編解碼方法,但是隻要我們能夠將原文變成肉眼不可識別的內容,其實就是一種加密的方法。 BASE64 的編碼都是按字串長度,以每 3 個 8 bit 的字元為一組,然後針對每組,首先獲取每個字元的 ASCII 編碼,然後將 ASCII 編碼轉換成 8
java 加密演算法 base64 以及 自定義 加解密
import sun.misc.BASE64Decoder; public class Base64Utils { public static String getBASE64(byte[] b) { String s = null; if (b !=
Qt以Base64加密作為基礎實現3種加解密方式(包含中文處理)
目錄 效果圖 加密演算法 本文提供三種方式來加密解密,都是用Qt本身提供的類,沒用外接庫。 普通base64加密解密 Qt已經有了最基本的toBase64加密演算法,同時提供fromBase64解密演算法。 加密
python中base64模組的加解密函式
Base64模組簡介 Base64是一種基於64個可列印字元來表示二進位制資料的表示方法。Base64常用於在通常處理文字資料的場合,表示、傳輸、儲存一些二進位制資料(或不可列印的字串)。包括MIME的email,email via MIME, 在XML中儲存複雜資料
基於mbedtls-1.3.14庫的rsa公鑰與私鑰生成與加解密,base64編碼與解碼用法介紹
1.1 之前總結了一篇關於AES加密與解密,base64編碼與解碼用法介紹,順便把rsa的用法也總結一下 1.2 用法 #incl
微軟企業級加解密解決方案MBAM架構
bitlocker mbam 企業級加解密解決方案 在之前的文章裏,我給大家分享了《Bitlocker企業安全加密管理系列-1》和《Bitlocker企業安全加密管理系列-2》在這裏我就不再給大家綴訴什麽是MBAM了,在這裏我主要給大家分享如何部署微軟企業級加解密解決方案MBAM系列文章,在這裏以