Es sollte so einfach sein wie:
echo -n "https://stackoverflow.com/q/39197703/5128464" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -iv 0 -e -base64
chiffrierten Text Giving:
l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk
die dann entschlüsselt werden können (mit der gleichen Technik, Schlüssel usw.):
echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d
Zurückgeben des Klartextes:
https://stackoverflow.com/q/39197703/5128464
Aber wenn Sie sorgfältig den ursprünglichen entschlüsselten Text (d. H. Dump die eigentliche Nachricht Bytes):
echo "JyO7wNzc8xht47QKWohfDVj6Sc2qH+X5tBCT+uetocIJcjQnp/2f1ViEBR+ty0Cz" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1
Sie diese erhalten (bitte die fünf ‚00‘ Bytes am Ende der Ausgabe beachten):
0000000: 68 74 74 70 73 3a 2f 2f 77 77 77 2e 79 6f 75 74 https://www.yout
0000010: 75 62 65 2e 63 6f 6d 2f 77 61 74 63 68 3f 76 3d ube.com/watch?v=
0000020: 2d 59 45 47 39 44 67 52 48 68 41 00 00 00 00 00 -YEG9DgRHhA.....
Und wenn Sie das gleiche für das vorherige Ergebnis wiederholen :
echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJqvCPwAzJLrnZph1fYX1qDkk" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1
Sie ein anderes Ende erhalten (diesmal fünf '05' Bytes):
0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197
0000020: 37 30 33 2f 35 31 32 38 34 36 34 05 05 05 05 05 703/5128464.....
Diese Bytes heißen padding bytes und müssen hinzugefügt werden, da AES cipher in CBC mode keine Nachrichten verarbeiten kann, deren Länge nicht N * 128 Bits ist (d. H. die nicht in 16-Byte-Blöcken)
Die in den ursprünglichen Klartext verwendet padding unterteilt werden (d.h. 00 00 00 00 00
) ein zero padding, aber die zweite (04 04 04 04
) ein PKCS7 padding.
Leider Null padding ist nicht direkt im OpenSSL Kommandozeilenprogramme unterstützt werden, so müssen Sie es manuell hinzufügen (beachten Sie die zusätzlichen Null-Bytes und eine zusätzliche -nopad
Option):
echo -ne "https://stackoverflow.com/q/39197703/5128464\0\0\0\0\0" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -e -base64
Giving:
l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR
Sie können die Polsterung des neuen Klartext überprüfen:
echo "l3iwQZrEe8R55MQMu13Hn2S+MvKs46fLT6rVP3yiJquYbIGPlGOBxJxJmU/bXocR" | openssl aes-128-cbc -K $(printf wearetpb | sha256sum | head -c 32 | tr '[:lower:]' '[:upper:]') -nosalt -nopad -iv 0 -base64 -d | xxd -g1
siehe
Um dass die Polsterung jetzt korrekt ist:
0000000: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 http://stackover
0000010: 66 6c 6f 77 2e 63 6f 6d 2f 71 2f 33 39 31 39 37 flow.com/q/39197
0000020: 37 30 33 2f 35 31 32 38 34 36 34 00 00 00 00 00 703/5128464.....
Wenn Sie wollten die Polsterung in der Schale erzeugen, siehe z.B. here (unter EDIT3).
Viel Glück!
Vergessen Sie nicht, einen anderen Schlüssel zu verwenden. – Daniel