Привет, уважаемый член StackOverflow,
У меня закрытая среда, в которой я не могу использовать узел js или любой другой язык, кроме OpenSSL или CrptoJs-версии этого модуля crypto-Js.
Мой код работает в Node Js, и я прикрепил рабочую версию здесь.
Может ли кто-нибудь из вас помочь мне получить рабочую версию в OpenSSL или в CrptoJs?
'use strict';
const crypto = require('crypto');
// The two keys gotten from Trustpilot
let encryptionKeyBase64 = 'JB+FsIQEMWjdhB/xLus/SpbaZje9wQQ785tECAsHzF4=';
let authenticationKeyBase64 = 'HFLYS943++xwKuj3qTypmB9F+pFzmNavccKJO+Mm2nY=';
// Our info to encrypt
let info = {
"email":"xyz@domain.com",
"name":"John Smith",
"ref":"1234",
"skus":["sku1","sku2","sku3"],
"tags":["tag1","tag2","tag3"]
};
let jsonSerializedOrder = JSON.stringify(info);
// When you get the keys from Trustpilot, they are base64 encoded, so first we need to decode them
let encryptionKey = Buffer.from(encryptionKeyBase64, 'base64');
console.log('encryptionKey'+encryptionKey);
let authenticationKey = Buffer.from(authenticationKeyBase64, 'base64');
console.log('authenticationKey'+authenticationKey);
// Generate a random initialization vector
let iv = crypto.randomBytes(16);
console.log('iv'+iv);
// Encrypt our order
let cipher = crypto.createCipheriv('aes-256-cbc', encryptionKey, iv);
console.log('cipher'+cipher);
let cipherText = Buffer.concat([cipher.update(jsonSerializedOrder, 'utf8'), cipher.final()]);
console.log('cipherText'+cipherText);
// Compute the HMAC
let hmac = crypto.createHmac('sha256', authenticationKey).update(Buffer.concat([iv, cipherText])).digest();
console.log('hmac'+hmac);
// Base64 encode the IV + cipherText + HMAC
let base64Payload = Buffer.concat([iv, cipherText, hmac]).toString("base64");
console.log('base64Payload'+base64Payload);
// URL encode to get the final payload
let payload = encodeURIComponent(base64Payload);
console.log(payload);