我使用此代码进行 DES 加密: How do I use 3des encryption/decryption in Java?
我正在加密大小为 8 的字节数组。据我所知,它应该会生成大小为 8 的加密数据。但结果是 16 个字节。
我已经对代码进行了必要的编辑,以对字节数组进行 DES 加密。比如将算法名称更改为 DES(比 DEDede)、 key 大小为 8 字节(比 24)等。
最佳答案
DES 的 block 大小为 64 位或 8 字节。 CBC 和 ECB 等操作模式是基于 block 的,但为了加密任意明文,有必要使用 PKCS#5/PKCS#7 填充等填充方案将任意明文填充到 block 大小的下一个倍数。
填充本身包含为 PKCS#5 填充添加了多少字节的信息。由于 8 字节已经是 block 大小的倍数,因此添加了完整的填充 block 。如果情况并非如此,您将能够在解密后可靠地消除明文和填充的歧义。
关于java - DES加密文本的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742846/