Код: Выделить всё
const generateAesKey = () => {
const { randomBytes } = require('node:crypto');
randomBytes(32, (err, buf) => {
if (err) throw err;
return buf.toString('hex');
});
}
const secretKey = generateAesKey();
Использование с ключами и DECRYPT. p>
Код: Выделить всё
const CryptoJS = require("crypto-js");
// updated per Tppaco's comment
const secretKey = CryptoJS.enc.Hex.parse("491fb9719864f51e19a0705a3ef2de15cd91576d881cdc4bd4394bf7451ee404");
const encrypt = (plainText) => {
const iv = CryptoJS.enc.Utf8.parse('BBBBBBBBBBBBBBBB');
const encrypted = CryptoJS.AES.encrypt(plainText, CryptoJS.enc.Utf8.parse(secretKey), {
iv: iv,
mode: CryptoJS.mode.CBC,
});
return encrypted.toString();
}
const decrypt = (cipherText) => {
const iv = CryptoJS.enc.Utf8.parse('BBBBBBBBBBBBBBBB');
const decrypted = CryptoJS.AES.decrypt(cipherText, CryptoJS.enc.Utf8.parse(secretKey), {
iv: iv,
mode: CryptoJS.mode.CBC,
});
return CryptoJS.enc.Utf8.stringify(decrypted);
}
const en = encrypt("Text to be encrypted");
console.log(decrypt(en))
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad,unpad
import base64
import json
import os
#CBC with Fix IV
# key = os.urandom(32) // to generate random secret key
# updated per Tppaco's comment
key = bytes.fromhex('491fb9719864f51e19a0705a3ef2de15cd91576d881cdc4bd4394bf7451ee404')
data = 'Text to be encrypted'
#FIX IV
iv = 'BBBBBBBBBBBBBBBB'.encode('utf-8') #16 char for AES128
def encrypt(data,key,iv):
data= pad(data.encode(),16)
cipher = AES.new(key,AES.MODE_CBC,iv)
return base64.b64encode(cipher.encrypt(data))
def decrypt(enc,key,iv):
enc = base64.b64decode(enc)
cipher = AES.new(key, AES.MODE_CBC, iv)
return unpad(cipher.decrypt(enc),16)
def lambda_handler(event, context):
encrypted = encrypt(data,key,iv)
print('encrypted CBC base64 : ',encrypted.decode("utf-8", "ignore"))
decrypted = decrypt(encrypted,key,iv)
print('decrypted data: ', decrypted.decode("utf-8", "ignore"))
return {
'statusCode': 200,
'decrypted text': json.dumps(decrypted.decode("utf-8", "ignore"))
}
< /code>
error < /strong> < /p>
"errormessage": "накладка неверна.",
/> "errortype": "valueError", < /p>
< /blockquote>
Моя основная цель - шифровать данные в узле и расшифровать их в Python. Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/780 ... vice-versa