Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to decrypt aes-256-cbc created by PHP #1270

Closed
abrkn opened this issue Mar 26, 2015 · 2 comments
Closed

Unable to decrypt aes-256-cbc created by PHP #1270

abrkn opened this issue Mar 26, 2015 · 2 comments

Comments

@abrkn
Copy link

abrkn commented Mar 26, 2015

I'm trying to decrypt some data that was encrypted by PHP and can be decrypted by PHP:

<?php
// aes-256-cbc.php

$emsg = hex2bin('ad0911ac3c5b95a70c7109b025a8947ff1adb882101b2ec137f35919f41a49c9314d27c7f376c5e013a44f91f4d30fbba3f27834e8a200ea494debc90a9dca5cd8cbedea4168719feee05b7c65adf3f226eefb6f851eddb1f10c4ef3c007ea7e683d4ed6e0139520d8df0830b8a0de5b18acf7d6531cdb43d0310095f70d72adee8717cf29230be4ba654ac985d5d1460d43d6c35da39787051b902d6278f95049b0a12b7d413ee28c8b353fcd2b0603abee9eda15ee795bfaa0807b46730b2f2ccb6193771bc10c79ba088aaf04bde255a6bbd462ec4db289a6d2d8e3b18214dbe69f212513274c5045e823b8c1f1e7aba39929eb3d2028e0259d5804470191d10e5cfa608faa7b82e0092f1d22ff31af7f4e9aac6edbaa5bb6c5b612c1a45f30e918ad48c989e02e80c74fbe336d630e33d3dca75b45b9d8924997a604b905d87058aae125bc4bb2d5632d0ad80ffcb4c478ac89bb790516bce81cfc03d731e2c0f36f4e42e6525456f35630e753d3be0dd70efdfe23657c912b34566499d555fc6c3e7410deed78eb73a06b46066f35d3ed19e1f79529b5ab578b2cb58e255a50c1e1842bed7c4e7c038388c1cc0bb4806b45c13b1a641cfcb0062ef9c2102498d9524de8647e402b3ac977d4bc232ff2720d51d9ca77cb9d7dc2c51f0e0bd6054d0904f7d22e5a5d0b653485765bc24b79a590bd2a2fbb5f2bac7b52cde1019b16db72b1df579f4728980f4d774000a6c5fa90e5b3fe798c7e4124a7e530451ce1177b752f55ead962886ff2cd7095f97f1f206a15575e026f00f8ca63adfd12d609a10b23e61ba4889f5af007ed8b7c9fee1e0cae86a59ad5599fddaeb233b4f7b946b790524aad4423d1979ac2552e301d7645d1f2b437908ed36d1fcb1379cfd703fcce4a51a1ae913c5e05e2e28d55a312bec1972be50ad03de5cadd');
$key = hex2bin('506b5313333df5034b090a1d640163e7ab17cd86f43bdd6117caff7777f094b9');
$iv = hex2bin('699b25b0906cb81a08e53ba047c1b2b4');
$msg = openssl_decrypt($emsg, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
$msg = substr($msg, 2);
echo "$msg\n";

/*

$ php -f aes-256-cbc.php
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis fringilla nunc nisi, ac elementum sem mollis non. Pellentesque rhoncus odio a sapien mattis, consequat varius diam mattis. Aliquam maximus nunc et velit accumsan imperdiet. Phasellus nec tristique quam. Integer felis ipsum, accumsan quis ex eget, aliquam pulvinar ipsum. Vestibulum accumsan faucibus porttitor. Phasellus varius metus at semper pretium. Praesent tristique nec libero id aliquam. Proin ultrices, diam ut commodo placerat, risus lectus faucibus nisi, id efficitur arcu dolor id felis. Phasellus eleifend vitae nisi in ullamcorper. Duis luctus nisi non risus tristique, et aliquam leo auctor.

*/

io.js code:

// aes-256-cbc.js
var crypto = require('crypto');

var emsg = new Buffer('ad0911ac3c5b95a70c7109b025a8947ff1adb882101b2ec137f35919f41a49c9314d27c7f376c5e013a44f91f4d30fbba3f27834e8a200ea494debc90a9dca5cd8cbedea4168719feee05b7c65adf3f226eefb6f851eddb1f10c4ef3c007ea7e683d4ed6e0139520d8df0830b8a0de5b18acf7d6531cdb43d0310095f70d72adee8717cf29230be4ba654ac985d5d1460d43d6c35da39787051b902d6278f95049b0a12b7d413ee28c8b353fcd2b0603abee9eda15ee795bfaa0807b46730b2f2ccb6193771bc10c79ba088aaf04bde255a6bbd462ec4db289a6d2d8e3b18214dbe69f212513274c5045e823b8c1f1e7aba39929eb3d2028e0259d5804470191d10e5cfa608faa7b82e0092f1d22ff31af7f4e9aac6edbaa5bb6c5b612c1a45f30e918ad48c989e02e80c74fbe336d630e33d3dca75b45b9d8924997a604b905d87058aae125bc4bb2d5632d0ad80ffcb4c478ac89bb790516bce81cfc03d731e2c0f36f4e42e6525456f35630e753d3be0dd70efdfe23657c912b34566499d555fc6c3e7410deed78eb73a06b46066f35d3ed19e1f79529b5ab578b2cb58e255a50c1e1842bed7c4e7c038388c1cc0bb4806b45c13b1a641cfcb0062ef9c2102498d9524de8647e402b3ac977d4bc232ff2720d51d9ca77cb9d7dc2c51f0e0bd6054d0904f7d22e5a5d0b653485765bc24b79a590bd2a2fbb5f2bac7b52cde1019b16db72b1df579f4728980f4d774000a6c5fa90e5b3fe798c7e4124a7e530451ce1177b752f55ead962886ff2cd7095f97f1f206a15575e026f00f8ca63adfd12d609a10b23e61ba4889f5af007ed8b7c9fee1e0cae86a59ad5599fddaeb233b4f7b946b790524aad4423d1979ac2552e301d7645d1f2b437908ed36d1fcb1379cfd703fcce4a51a1ae913c5e05e2e28d55a312bec1972be50ad03de5cadd', 'hex');
var key = new Buffer('506b5313333df5034b090a1d640163e7ab17cd86f43bdd6117caff7777f094b9', 'hex');
var iv = new Buffer('699b25b0906cb81a08e53ba047c1b2b4', 'hex');

var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
decipher.update(emsg);

var msg = decipher.final();
msg = msg.slice(2);
console.log(msg.toString('utf8'));

/*
$ node temp/aes-256-cbc.js
leo auctor.
*/

My versions:

$ openssl version
OpenSSL 1.0.2 22 Jan 2015
$ php --version
PHP 5.4.38 (cli) (built: Feb 26 2015 09:21:22)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
$ node --version
v1.3.0
$ system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: OS X 10.10.2 (14C1514)
      Kernel Version: Darwin 14.1.0
@mscdex
Copy link
Contributor

mscdex commented Mar 26, 2015

You're discarding the initially decrypted contents by not doing anything with the result from decipher.update().

This example will work as expected:

var crypto = require('crypto');

var emsg = new Buffer('ad0911ac3c5b95a70c7109b025a8947ff1adb882101b2ec137f35919f41a49c9314d27c7f376c5e013a44f91f4d30fbba3f27834e8a200ea494debc90a9dca5cd8cbedea4168719feee05b7c65adf3f226eefb6f851eddb1f10c4ef3c007ea7e683d4ed6e0139520d8df0830b8a0de5b18acf7d6531cdb43d0310095f70d72adee8717cf29230be4ba654ac985d5d1460d43d6c35da39787051b902d6278f95049b0a12b7d413ee28c8b353fcd2b0603abee9eda15ee795bfaa0807b46730b2f2ccb6193771bc10c79ba088aaf04bde255a6bbd462ec4db289a6d2d8e3b18214dbe69f212513274c5045e823b8c1f1e7aba39929eb3d2028e0259d5804470191d10e5cfa608faa7b82e0092f1d22ff31af7f4e9aac6edbaa5bb6c5b612c1a45f30e918ad48c989e02e80c74fbe336d630e33d3dca75b45b9d8924997a604b905d87058aae125bc4bb2d5632d0ad80ffcb4c478ac89bb790516bce81cfc03d731e2c0f36f4e42e6525456f35630e753d3be0dd70efdfe23657c912b34566499d555fc6c3e7410deed78eb73a06b46066f35d3ed19e1f79529b5ab578b2cb58e255a50c1e1842bed7c4e7c038388c1cc0bb4806b45c13b1a641cfcb0062ef9c2102498d9524de8647e402b3ac977d4bc232ff2720d51d9ca77cb9d7dc2c51f0e0bd6054d0904f7d22e5a5d0b653485765bc24b79a590bd2a2fbb5f2bac7b52cde1019b16db72b1df579f4728980f4d774000a6c5fa90e5b3fe798c7e4124a7e530451ce1177b752f55ead962886ff2cd7095f97f1f206a15575e026f00f8ca63adfd12d609a10b23e61ba4889f5af007ed8b7c9fee1e0cae86a59ad5599fddaeb233b4f7b946b790524aad4423d1979ac2552e301d7645d1f2b437908ed36d1fcb1379cfd703fcce4a51a1ae913c5e05e2e28d55a312bec1972be50ad03de5cadd', 'hex');
var key = new Buffer('506b5313333df5034b090a1d640163e7ab17cd86f43bdd6117caff7777f094b9', 'hex');
var iv = new Buffer('699b25b0906cb81a08e53ba047c1b2b4', 'hex');

var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);

var msg = Buffer.concat([decipher.update(emsg), decipher.final()]);
msg = msg.slice(2);
console.log(msg.toString('utf8'));

@mscdex mscdex closed this as completed Mar 26, 2015
@abrkn
Copy link
Author

abrkn commented Mar 26, 2015

👍 Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants