Ich versuche einen Hash zu erstellen, der mit dem Laravel Verschlüsselungsmodul kompatibel ist. Hier ist die Referenz-Quellcode für Laravel: https://github.com/illuminate/encryption/blob/master/Encrypter.php#L101-163Kompatibilität AES-256-CBC Node/Laravel
Hier ist, was ich bin gekommen, durch:
const encrypt = function (payload) {
const iv = crypto.randomBytes(16);
const key = new Buffer(config.stuff.key, 'base64');
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
cipher.setAutoPadding(false); // With or without this /!\
let value = cipher.update(serialize(JSON.stringify(payload)), 'utf8', 'base64');
value + cipher.final('base64');
const mac = crypto.createHmac('sha256', new Buffer(config.stuff.key, 'base64')).update(iv.toString('base64') + value).digest('hex');
const json = JSON.stringify({ iv: iv.toString('base64'), value, mac });
return base64_encode(json);
};
Leider habe ich einen BAD_DECRYPT, wenn ich das versuchen. Dies scheint von OpenSSL Padding zu kommen. Hat jemand eine Idee?
Hinweis: Ich habe base64_encode und serialisieren Funktionen von phpjs und andere Sachen – Extaze