PHP
function encodeBase64Url($data)
{
return strtr(base64_encode($data), ['+' => '-', '/' => '_', '=' => '']);
}
function encrypt($data, $secret)
{
$data = json_encode($data);
$salt = openssl_random_pseudo_bytes(16);
$data = openssl_encrypt($data, 'AES-128-CBC', $secret, $options = OPENSSL_RAW_DATA, $salt);
$data = encodeBase64Url($salt . $data);
return $data;
}
My node.js code example (NOT Working)
function encrypt(data, secret){
data = JSON.stringify(data);
let salt = crypto.randomBytes(16);
let encryptor = crypto.createCipheriv('AES-128-CBC', secret, salt);
let result = Buffer.concat([salt, encryptor.update(data), encryptor.final()]);
result = encodeBase64Url(result);
return result;
}
function encodeBase64Url(data){
let res = Buffer.from(data).toString('base64');
res = res.replace(/\+/g,'-').replace(/\//g, '_').replace(/=/g, '');
return res;
}
I get error Error: Invalid key length
I do not understand why I get this error. Thank you for any help