AES-128-CTR加密在PHP(openssl_encrypt)和Node.js(加密)上给出不同的结果

I have an API that requires me to encode data that I send to it through an AES-cipher.

However, the only example code I have been given is Node.js code.

I thought, how hard can it be to reimplement it in PHP as well ?

Pretty hard apparently.

Below you can see both approaches, yet you can also see different results.

Anyone an idea what might be going wrong ?

NODE.js version

var crypto = require('crypto');
var algorithm = 'aes-128-ctr';

function encrypt(text, password) {
  const key = Buffer.from(password, "hex").slice(0, 16);
  const ivBuffer = Buffer.alloc(16);
  const cipher = crypto.createCipheriv(algorithm, key, ivBuffer);
  let crypted = cipher.update(text, "utf8", 'hex');
  crypted += cipher.final('hex');
  console.log(crypted);
}

encrypt('test','ed8f68b144f94c30b8add43276f0fa14');

RESULT : 3522ca23

PHP version

function encrypt($text, $password) {
  $iv = "0000000000000000";
  $encrypted = openssl_encrypt($text, 'aes-128-ctr', $password, OPENSSL_RAW_DATA, $iv);
  return bin2hex($encrypted);
}

echo encrypt('test', 'ed8f68b144f94c30b8add43276f0fa14');

RESULT: 8faa39d2

查看全部
drygauost253590142
drygauost253590142
2018/09/18 12:37
  • node.js
  • encryption
  • php
  • aes
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复