Нужна помощь, чтобы исправить этот код для работы с командами CrptoJs или OpenSSL - PullRequest
0 голосов
/ 01 ноября 2018

Привет, уважаемый член 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);
...