Encryption 关于加密后的数据长度
请告诉我使用Java加密和解密的数据长度。 当在指定DES/CBC/PKCS5Padding的情况下执行Cipher.dofinal()时,数据长度为8字节的未加密数据在加密后变为16字节。Encryption 关于加密后的数据长度,encryption,Encryption,请告诉我使用Java加密和解密的数据长度。 当在指定DES/CBC/PKCS5Padding的情况下执行Cipher.dofinal()时,数据长度为8字节的未加密数据在加密后变为16字节。 有没有办法将其设为8字节?DES已过时,不再安全。AES好得多 AES和DES都是分组密码,对数据进行分组加密:分组。DES块为64位8个字符,而AES块为128位16个字符。将明文拆分为块时,末尾可能会留下一些奇怪的字符。加密填充用于将明文扩展到下一块边界。在您的例子中,您使用的是PKCS5填充 对于DE
有没有办法将其设为8字节?DES已过时,不再安全。AES好得多 AES和DES都是分组密码,对数据进行分组加密:分组。DES块为64位8个字符,而AES块为128位16个字符。将明文拆分为块时,末尾可能会留下一些奇怪的字符。加密填充用于将明文扩展到下一块边界。在您的例子中,您使用的是PKCS5填充 对于DES中的8字节纯文本,您的填充在加密之前添加了8字节,因为填充总是添加的。因此,您的16字节密码文本:8字节的加密明文和8字节的加密填充 如果您真的只需要8字节的cyphertext,那么请使用
NoPadding
或系统上的任何等效内容。这会省略任何填充,但会泄露有关明文长度的信息
从安全角度来看,最好切换到填充AES并接受16字节的密码文本。是的,通过更改填充,但为什么要这样做?怎么了?谢谢你,罗森。我负责修复现有系统的工作,并根据设计文件进行调查。我建议换成AES。