如何使用ECB密码模式和PKCS7块填充模式使用Twofish进行加密?



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

  • 双鱼算法
  • 欧洲央行密码模式
  • 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;
}

你发现这段代码有问题吗?

mcrypt_encrypt

不支持PKCS7 填充。 它也已被弃用了相当长的一段时间。

如果您想与之通信的 API 使用 Twofish 和 ECB 模式,那么您可能根本不想使用该 API - 如果他们乐于为前端 API 一起破解一个令人难以置信的不安全加密方案,那么他们的代码库的其余部分也可能非常糟糕。

最新更新