我想用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 一起破解一个令人难以置信的不安全加密方案,那么他们的代码库的其余部分也可能非常糟糕。