Jouez à CTF pour apprendre la cryptographie 1: base64 plus le décodage

Cryptographie CTF 1: base64 plus décodage

1. Sujet en premier:

Insérez la description de l'image ici
Il s'agit du premier exercice CTF de Xiaoliang. Après avoir téléchargé la pièce jointe, j'ai vu une chaîne de codes:
Insérez la description de l'image ici
j'étais également confus lorsque j'ai reçu cette chaîne de codes. Mais après une analyse minutieuse, j'ai trouvé que cette chaîne de codes a ses propres caractéristiques: elle
est composée de tous les chiffres, majuscules et minuscules. Ensuite, je l'ai mise dans VS et l'ai exécutée. J'ai trouvé que la longueur de ce code est de 44.
D'après mes connaissances en cryptographie, ceci La séquence est définitivement à moi à décoder, car cette séquence semble désordonnée et devrait être du texte chiffré. Cependant, il peut déchiffrer mon texte chiffré en texte clair, et je n'ai pas obtenu la clé privée. Il doit s'agir d'un algorithme de chiffrement symétrique. Si c'est le chiffre de César, je devrais recevoir les règles de remplacement, donc ce ne devrait pas être le chiffre classique. Ce mot de passe est un multiple de 4 et ne contient que des lettres et des chiffres majuscules et minuscules. Il doit être chiffré en base64.

2. Ma solution: décodage de programme Java

import java.util.Base64;

public class base64 {
    
    
	static String src = "Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9";
	
	public static void main(String[] args) {
    
    
		
		/* 加密 */
//		String Encode = Base64.getEncoder().encodeToString(src.getBytes());
//		System.out.println(Encode);
		
		
		/* 解密 */
		byte[] Decode = Base64.getDecoder().decode(src);
		System.out.println(new String(Decode));
		
	}
	
}

Cette bibliothèque Base64 est disponible en jdk, vous devez ajouter une nouvelle configuration de chemin.
Insérez la description de l'image ici

Troisièmement, apprenez l'algorithme de chiffrement base64

Base64 est une méthode de codage basée sur 64 caractères imprimables pour représenter des données binaires. Pourquoi ne pas utiliser directement le code ASCII? Parce que les caractères que nous saisissons peuvent avoir des caractères qui ne sont pas visibles dans le code ASCII, afin d'être complètement visibles, le codage base64 est utilisé. Cet algorithme de cryptage est souvent utilisé pour crypter et décrypter des images et des fichiers PDF.

3.1, étapes de l'algorithme de cryptage et de décryptage base64

La clé de l'algorithme de chiffrement symétrique est en fait un critère d'algorithme de chiffrement. Selon le critère unifié (clé), le texte en clair peut être chiffré et le texte chiffré peut être déchiffré. L'algorithme de cryptage base64 est des étapes si générales:
première étape: acquisition d'informations code en clair correspondant ASCii
Étape: obtenir le code ASCii bytecode correspondant à (un octet est huit bits) est converti en bit binaire cum d'
abord Étape 3: Changez le format de codage et changez le code binaire 8 bits en un groupe de six (pensez pourquoi?)
Étape 4: Convertissez le code binaire du groupe de six bits en décimal, puis vérifiez le tableau de la table des mots de passe base64
Étape 5: Formez un texte chiffré après avoir vérifié le tableau. Notez que le texte brut avec le dernier bit ajouté devient un caractère: '=' (Comment ajouter un bit?)

3.2. Explorer la source des algorithmes de chiffrement et de déchiffrement base64:

Premièrement: pourquoi convertir un nombre binaire à huit chiffres en un nombre binaire à six chiffres?
Étant donné qu'un octet est un binaire de huit bits, les informations en texte brut sont composées de caractères et un caractère est d'un octet, soit huit bits. Ensuite, la table de mots de passe base64 est en fait un ensemble de paires clé-valeur, où clé = {0, 1, 2,…, 63}, donc le code binaire qui représente 63 nécessite 6 bits, donc seulement 6 bits sont nécessaires, ce qui dépasse La représentation à 6 chiffres est également inutile, elle débordera, c'est-à-dire qu'elle ne peut pas être représentée!

Deuxièmement: que signifie ce complément? Comment maquiller?
En supposant que la longueur du texte brut est L, alors la longueur du code binaire converti de 8 bits est: 8 * L. Ce nombre est-il nécessairement divisible par 6? Evidemment ce n'est pas forcément, il faut donc ajouter 0 à l'arrière, et ce complément est un groupe de compléments, un groupe de 8 bits ! Jusqu'à ce que la longueur totale soit divisible par 6.

3.3. Table des mots de passe Base64:

Insérez la description de l'image ici

3.4. Donner un exemple de cryptage base64: prenez "ABCD" comme exemple

La première étape: obtenir la valeur correspondante de ASCii et la convertir en code binaire 8 bits
Src = "ABCD"
A = 65 = 0100 0001
B = 66 = 0100 0010
C = 67 = 0100 0011
D = 68 = 0100 0100

Étape 2: Transformez le code binaire 8 bits en 6 bits et remplissez k groupes de 0 pour les défauts jusqu'à ce qu'il soit divisible par 6

     16               20              9               3               17             0                 '='             '='
 010000       010100      001001      000011     010001    00[0000    0000][00    000000] 

La troisième étape: selon la conversion de la table des mots de passe base64:

Texte chiffré M = "QUJDRA =="

4. Il existe des sites Web de requête correspondants pour la conversion en base64:

URL de requête base64, mais il n'est pas recommandé d'utiliser, il est recommandé de penser

Je suppose que tu aimes

Origine blog.csdn.net/qq_44274276/article/details/105376938
conseillé
Classement