0

我想用 PHP 访问 API。规格如下:

  • 双鱼算法
  • ECB 密码模式
  • PKCS7块填充模式

我尝试了很多不同的 PHP 函数和库,但似乎都没有。

这是我的代码:

function encrypt($data, $key)
{
  // Pad for PKCS7
  $blockSize = mcrypt_get_block_size(MCRYPT_TWOFISH, MCRYPT_MODE_ECB);
  $len = strlen($data);
  $pad = $blockSize - ($len % $blockSize);
  $data .= str_repeat(chr($pad), $pad);

  $encryptedData = mcrypt_encrypt( MCRYPT_TWOFISH, $key, $data, MCRYPT_MODE_ECB);

  return $encryptedData;
}

你看到这段代码有问题吗?

4

1 回答 1

0

mcrypt_encrypt不支持 PKCS7 填充。它也被弃用了很长一段时间。

如果您要与之交谈的 API 使用的是 Twofish 和 ECB 模式,那么您可能根本不想使用该 API - 如果他们乐于为前端 API 组合一个非常不安全的加密方案,那么其余的他们的代码库可能也很假。

于 2018-09-17T23:58:42.230 回答