我正在使用此代码进行DES加密: How do I use 3des encryption/decryption in Java?
我正在加密大小为8的字节数组。据我所知,它应该会产生大小为8的加密数据。但结果是16个字节。
我已经在代码中进行了必要的编辑,以对字节数组进行DES加密。就像将algo名称改为DES(比DEDede),密钥大小为8字节(比24)等。
答案 0 :(得分:2)
DES的块大小为64位或8字节。诸如CBC和ECB之类的操作模式是基于块的,但是为了加密任意的明文,有必要使用诸如PKCS#5 / PKCS#7填充之类的填充方案来将任意明文填充到块大小的下一个倍数。
填充本身包含为PKCS#5填充添加了多少字节的信息。由于8字节已经是块大小的倍数,因此添加了完整的填充块。事实并非如此,您可以在解密后可靠地消除明文和填充的歧义。