我想在下面的代码中知道是否添加了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使用零填充,直到消息是块大小的N倍.
要添加PKCS#5填充,请使用以下公式:
p = b - l % b
其中l是消息长度,b是块大小,%是余数操作.然后在执行加密之前将值p的p个字节添加到末尾.