Crypter AES dans Terminal et déchiffrer en PHP

Programmeur

Je suis tombé sur d'autres fils de discussion avec des questions similaires, mais en raison des récents changements apportés à PHP (c'est-à-dire la suppression de mcrypt ), je cherche des conseils sur la meilleure façon de procéder en utilisant OpenSSL en 2017/18.

En utilisant echo 'this string will be encrypted' | openssl enc -aes-256-cbc -a -pass pass:123le terminal Mac, j'ai pu crypter la chaîne par mot de passe et j'aimerais maintenant la transmettre (en tant que paramètre) à une fonction PHP côté serveur pour la décrypter.

Après avoir étudié cette question, je peux voir que c'est possible mais il utilise la fonction mcrypt maintenant supprimée . Pour en savoir plus dans le manuel PHP , je ne suis pas plus proche de savoir comment inverser cette commande de cryptage en son équivalent de décryptage PHP.

Cette réponse récente est ce que j'ai implémenté jusqu'à présent, encore une fois, cela ne fonctionnera tout simplement pas avec un cryptage généré par Terminal, un seul qui a été créé en PHP (non montré ici).

<?php
  $encrypted_string = $_GET['data'];
  $password = '123';
  $decrypted_data = openssl_decrypt($encrypted_string, "AES-256-CBC", $password);
  print "Decrypted Data: <$decrypted_data>\n";
?>

Le manuel PHP OpenSSL indique que du texte brut ou des chaînes encodées en base64 peuvent être transmises et déchiffrées. Comme j'ai utilisé le -adrapeau pendant le chiffrement, je m'attendrais à ce que base64 soit transmis, éliminant ainsi la source comme raison potentielle pour laquelle aucune donnée déchiffrée n'est renvoyée.

J'ai pris soin de l'encodage des URL de telle sorte que tous les symboles + produits par l'algorithme de cryptage soient remplacés par leur équivalent - %2B - URL-Safe car ils seraient autrement transformés en un caractère espace, brisant ainsi la chaîne de paramètre. Cela garantit en outre que la chaîne d'entrée codée est correctement adressée par l'algorithme de décryptage.

Questions : Pourquoi ma fonction PHP ne déchiffre-t-elle pas la chaîne générée par la commande de terminal, bien que les deux utilisent la même méthode et le même mot de passe ? Qu'est-ce qui manque dans mon code PHP pour que cela fonctionne ?

Bravo à tous.

METTRE À JOUR

J'utilise maintenant la commande Terminal :
echo 'blah' | openssl enc -aes-256-cbc -a -K B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF -iv 64299685b2cc8da5qui crypte pour :Y4xelTtEJPUHytB5ARwUHQ==

Je passe ceci à PHP en utilisant www.example.com/?data=Y4xelTtEJPUHytB5ARwUHQ==

PHP devrait prendre les paramètres de données et les décrypter. Actuellement, cette fonction ressemble à ceci :

<?php
$encrypted_string = base64_decode($_GET['data']);
$key = 'B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF';
$iv = '64299685b2cc8da5';

$output = openssl_decrypt($encrypted_string, 'AES-256-CBC', hex2bin($key), OPENSSL_RAW_DATA, hex2bin($iv));
print "Decrypted Data: <$output>\n";
?>
Parc Luke Joshua

OpenSSL utilise un KDF propriétaire que vous ne voulez probablement pas faire l'effort de reproduire en code PHP. Cependant, vous pouvez plutôt passer votre clé en hexadécimal pur, en évitant le KDF, en utilisant le -Kdrapeau :

echo 'blah' | openssl enc -aes-256-cbc -K 0000000000000000000000000000000000000000000000000000000000000000

Ici, la grande chaîne hexadécimale est votre clé 256 bits, codée en hexadécimal. Cette opération de cryptage sera compatible avec votre PHP.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Crypter et décrypter un fichier volumineux avec AES

Crypter dans le nœud et décrypter en java

Crypter et décrypter à l'aide de PyCrypto AES 256

Crypter et décrypter à l'aide de PyCrypto AES 256

Crypter et décrypter en Java

AES-CTR Crypter dans Go et décrypter dans CryptoJS

Crypter la charge utile à l'aide d'une clé et iv par l'algorithme AES / GCM / NoPadding dans le nœud js et décrypter en java

Crypter et décrypter AES avec Golang et Ruby

Crypter en python et décrypter en Java avec AES-CFB

Chiffrer et déchiffrer AES

Crypter le texte en utilisant AES en Javascript puis décrypter dans le service C # WCF

Crypter et décrypter par algorithme AES à la fois en python et android

Crypter et décrypter avec le mode AES ECB 'BadPaddingException' dans certains cas

Crypter - Décrypter AES PHP

Crypter et décrypter dans bcryptjs

Crypter un fichier dans node et décrypter en java en utilisant "AES / GCM / NoPadding". Fondamentalement, l'équivalent AES / GCM / NoPadding dans node.js

Crypter du texte en PHP et décrypter en Python

Crypter dans Nodejs et décrypter en PHP

Chiffrer AES dans Cryptojs, décrypter dans Pycrypto

Comment crypter et décrypter en utilisant AES CBC 256bit et PKCS5Padding dans Dart et également récupérer des paramètres

Crypter avec AES en utilisant phpseclib et décrypter avec CryptoJS

comment crypter et décrypter avec AES CBC 128 dans Elixir

Crypter avec Node.js AES CTR et déchiffrer avec PyCrypto

Comment décrypter AES en utilisant PHP ?

Décrypter PHP AES-256-CFB en Java

Crypter dans Laravel 5.7 et déchiffrer dans Codeigniter 3.1

QT : AES-256-CBC Crypter/Décrypter en C++ selon le code PHP

Crypter dans Node.JS Crypto (aes-256-cbc) puis déchiffrer dans OpenSSL CLI

Décrypter AES en JavaScript

TOP liste

  1. 1

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  2. 2

    Modbus Python Schneider PM5300

  3. 3

    Comment faire une recherche partielle et obtenir un score pertinent dans Elasticsearch

  4. 4

    Autocomplete avec java, Redis, Recherche élastique, Mongo

  5. 5

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  6. 6

    Comment utiliser HttpClient avec TOUT cert ssl, quelle que soit la « mauvaise » est

  7. 7

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  8. 8

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  9. 9

    MasterService d'ElasticSearch prend trop de temps pour calculer l'état du cluster et lancer ProcessClusterEventTimeoutException

  10. 10

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  11. 11

    Quelque chose dans le cluster Elasticsearch 7.4 devient de plus en plus lent avec les délais de lecture de temps en temps

  12. 12

    Microsoft.WebApplication.targets

  13. 13

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  14. 14

    Comment changer la couleur de la police dans R?

  15. 15

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Exporter la table de l'arborescence vers CSV avec mise en forme

  18. 18

    Résultat de l'échantillonneur JMeter : comprendre le temps de chargement, le temps de connexion et la latence

  19. 19

    Ajustement non linéaire avec R

  20. 20

    comment copier du contenu et le mettre dans un pdf nouvellement créé en utilisant iText

  21. 21

    php ajouter et fusionner des données de deux tables

chaudétiquette

Archive