Python equivalent of NodeJS AES 256 CTR algorithm
up vote
0
down vote
favorite
I have been encrypting messages with a nodejs module like so:
var crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'd6F3Efeq';
function encrypt(text)
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex');
return crypted;
(from here:https://lollyrock.com/articles/nodejs-encryption/)
However, using the same secret, same algorithm and same mode I cannot decrypt this using cryptography in Python.
Here's one of the things I've tried:
crypto = AES.new(password, AES.MODE_CTR)
print(crypto.decrypt(message.decode("hex")))
Returns binary data. Encoding it in UTF-8 fails, and most interestingly:
it seems AWS.new generates a random iv each time, and the result of the decryption is different for each run!
.. Now, the nodeJS library does not return a Nonce, so I don't know what else to bring with me from the NodeJS function apart from the ciphertext and the password (secret) - any ideas?
python node.js encryption cryptography aes
add a comment |
up vote
0
down vote
favorite
I have been encrypting messages with a nodejs module like so:
var crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'd6F3Efeq';
function encrypt(text)
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex');
return crypted;
(from here:https://lollyrock.com/articles/nodejs-encryption/)
However, using the same secret, same algorithm and same mode I cannot decrypt this using cryptography in Python.
Here's one of the things I've tried:
crypto = AES.new(password, AES.MODE_CTR)
print(crypto.decrypt(message.decode("hex")))
Returns binary data. Encoding it in UTF-8 fails, and most interestingly:
it seems AWS.new generates a random iv each time, and the result of the decryption is different for each run!
.. Now, the nodeJS library does not return a Nonce, so I don't know what else to bring with me from the NodeJS function apart from the ciphertext and the password (secret) - any ideas?
python node.js encryption cryptography aes
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
3
From the crypto documentation:Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Usecrypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).
– Robert
Nov 9 at 19:21
1
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
This might help you
– kelalaka
Nov 9 at 20:22
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have been encrypting messages with a nodejs module like so:
var crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'd6F3Efeq';
function encrypt(text)
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex');
return crypted;
(from here:https://lollyrock.com/articles/nodejs-encryption/)
However, using the same secret, same algorithm and same mode I cannot decrypt this using cryptography in Python.
Here's one of the things I've tried:
crypto = AES.new(password, AES.MODE_CTR)
print(crypto.decrypt(message.decode("hex")))
Returns binary data. Encoding it in UTF-8 fails, and most interestingly:
it seems AWS.new generates a random iv each time, and the result of the decryption is different for each run!
.. Now, the nodeJS library does not return a Nonce, so I don't know what else to bring with me from the NodeJS function apart from the ciphertext and the password (secret) - any ideas?
python node.js encryption cryptography aes
I have been encrypting messages with a nodejs module like so:
var crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'd6F3Efeq';
function encrypt(text)
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex');
return crypted;
(from here:https://lollyrock.com/articles/nodejs-encryption/)
However, using the same secret, same algorithm and same mode I cannot decrypt this using cryptography in Python.
Here's one of the things I've tried:
crypto = AES.new(password, AES.MODE_CTR)
print(crypto.decrypt(message.decode("hex")))
Returns binary data. Encoding it in UTF-8 fails, and most interestingly:
it seems AWS.new generates a random iv each time, and the result of the decryption is different for each run!
.. Now, the nodeJS library does not return a Nonce, so I don't know what else to bring with me from the NodeJS function apart from the ciphertext and the password (secret) - any ideas?
python node.js encryption cryptography aes
python node.js encryption cryptography aes
asked Nov 9 at 18:05
Alex
4,13621117
4,13621117
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
3
From the crypto documentation:Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Usecrypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).
– Robert
Nov 9 at 19:21
1
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
This might help you
– kelalaka
Nov 9 at 20:22
add a comment |
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
3
From the crypto documentation:Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Usecrypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).
– Robert
Nov 9 at 19:21
1
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
This might help you
– kelalaka
Nov 9 at 20:22
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
3
3
From the crypto documentation:
Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Use crypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).– Robert
Nov 9 at 19:21
From the crypto documentation:
Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Use crypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).– Robert
Nov 9 at 19:21
1
1
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
This might help you
– kelalaka
Nov 9 at 20:22
This might help you
– kelalaka
Nov 9 at 20:22
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53231143%2fpython-equivalent-of-nodejs-aes-256-ctr-algorithm%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53231143%2fpython-equivalent-of-nodejs-aes-256-ctr-algorithm%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
which python crypto module are you using?
– James K Polk
Nov 9 at 19:12
3
From the crypto documentation:
Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher()
this is why you have no nonce. Usecrypto.createCipheriv() t
instead and provide a large random nonce (IV=Nonce).– Robert
Nov 9 at 19:21
1
Yep, your node code is invoking undefined behavior. Using that in production would be a very poor idea. See the code examples in this repository.
– Luke Joshua Park
Nov 9 at 19:48
This might help you
– kelalaka
Nov 9 at 20:22