用于 DES/CBC/PKCS5Padding 加密和解密的 PHP 脚本

标签 php encryption mcrypt des pkcs#5

我想知道下面的代码中是否添加了 PKCS#5 填充?如果没有怎么添加?

$message = "insert plaintext message here";

$iv  = pack('H*', 'insert hex iv here');
$key = pack('H*', 'insert hex key here');

$enc = mcrypt_encrypt(MCRYPT_DES, $key, $message, MCRYPT_MODE_CBC, $iv);

echo bin2hex($enc);

我还想创建一个 PHP 代码来解密使用 DES/CBC/PKCS5Padding 创建的字符串。我认为可以修改上面提到的代码来解密。

对我来说重要的是获得 PKCS#5 Padding 和 Unpadding 脚本。

最佳答案

不,没有添加。不幸的是,PHP/mcrypt 使用零填充,直到消息达到 block 大小的 N 倍。

要添加 PKCS#5 填充,请使用以下公式:

p = b - l % b

其中l是消息长度,b是 block 大小,%是余数运算。然后在执行加密之前将带有值 pp 字节添加到末尾。

关于用于 DES/CBC/PKCS5Padding 加密和解密的 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19734916/

相关文章:

php - php在特定时间间隔获得负值的时差

php - 在 PHP 安装上启用 Mcrypt

php - 每次调用函数或创建局部变量

php - 使用 Javascript 和 JQuery UI 的 while 循环失败

java.security.InvalidKeyException : Illegal key size - After Windows OS security patch

c# - 就大小而言,最好的对称 .net 加密提供程序是什么?

encryption - AES 加密与解密速度

php - 如何覆盖 24 个字符的 mcrypt salt 限制?

php - 清理多余的 PHP 扩展 - 将所有内容切换到 mcrypt 或 openssl?

php - 使用jquery post连接mysql数据库时如何返回错误信息