J'essaie d'apprendre comment effectuer un cryptage/décryptage simple entre une machine Windows 64 (mon PC) et PHP fonctionnant sur un serveur web Linux en utilisant openSSL .Encrypt/Decrypt openSSL entre Windows PC et PHP fonctionnant sous Linux Web Server
Sur ma machine Windows, j'ai installé OpenSSL v1.0.2k pour Win64 et je suis en utilisant la commande suivante pour créer une chaîne cryptée en utilisant un mot de passe simple et une simple clé située dans secretkey.txt.
enc -aes-256-cbc -A -base64 -nopad -nosalt -pass pass:hello -in secretkey.txt
Quand je lance la commande ci-dessus, je reçois la chaîne suivante:
3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=
Utilisation de la chaîne ci-dessus, je me attends PHP sur mon serveur web Linux pour pouvoir décrypter comme ceci:
$encrypted = '3WE7cuBFhuLCn3/ZBnUrBn68nn3tVn0NKKz63B3uvoc=';
$enc = 'aes-256-cbc';
$password = 'hello';
$key = openssl_decrypt($encrypted, $enc, $password, OPENSSL_ZERO_PADDING);
echo $key .' should equal this-1234-is-4567-my-8910-secret';
Mais, au lieu que je reçois ceci:
9 (jT] $ WMaSèzz>. (Doit être égal à ce-1234-est-4567-my-8910 secret
I « ai passé en revue les sites, et essayé plusieurs versions, mais je ne peux pas le faire pour déchiffrer correctement:
Open SSL Enc
Open SSL Command Line
PHP Decrypt
pas un doublon. la question est d'essayer de chiffrer à partir de la ligne de commande (windows) et décrypter en utilisant php. la solution recommandée est tout au sujet du cryptage et du décryptage tous dans PHP. – Marc
Êtes-vous base64 décodant la sortie openssl dans votre code PHP? –
Le rembourrage à zéro est une mauvaise idée, en général, le rembourrage PKCS # 7 (née PKCS # 5) est utilisé. Le remplissage à zéro n'autorise pas le cryptage de données binaires se terminant par un octet zéro (0x00). – zaph