I'm using AES in GCM mode to encrypt some data, but I'm using two different languages and libraries for encryption and decryption and they seem to have different vocabularies about what I need.
I'm encrypting with a Python library (Crypto). The encrypt_and_digest
method takes a 128 bit key and a message and returns a 128 bit nonce, 128 bit tag, and a ciphertext.
(Encryption code taken from this example)
I'm decrypting with the default Node.js crypto library. That library expects a session key, a tag, and an IV. When I pass the nonce from the Python library as the IV, it gives me an “invalid iv size” error. Examples of the Node library seem to use a 12-character string as an IV.
My decryption code looks like this (taken from here):
var decipher = crypto.createDecipheriv(algorithm, password, nonce)
decipher.setAuthTag(encrypted.tag);
var dec = decipher.update(encrypted.content, 'hex', 'utf8')
What is the difference between IV and nonce for this scheme? How should I resolve this? Thanks!
via B1CL0PS
No comments:
Post a Comment