AES256JNCryptor加密后的密文长度

从文档看(http://jncryptor.googlecode.com/svn/trunk/javadoc/index.html),加密后的密文不但包括AES密文,还包括了前后一共66个字节的附加信息。

由于采用了256位AES加密,使用了CBC模式加PKCS #5补齐,所以AES的密文字节长度 = (明文长度 +1) / 16 * 16(即比明文长度大的最小的16的倍数)。

AES256JNCryptor返回的密文长度则是在此基础上再加上66个字节。

返回的密文是二进制数据,无法直接显示。如果需要进一步编码为可显示字符串,则需进行BASE64编码或者十六进制编码。编码后的数据长度会进一步增加(BASE64是增长为4/3倍起的最小的4的倍数,十六进制编码是增长为2倍)。比如,对原文长度在32-47个字节之间的明文,经过AES256JNCryptor加密后的密文长度就是114个字节,再做一次BASE64编码转换成可显示字符就成了152个字符。

原明文长度  -> AES密文长度 -> BASE64编码长度
-------------------------------------------------------------------
 0-15 chars -> 82 bytes -> 112 chars
16-31 chars -> 98 bytes -> 132 chars
32-47 chars -> 114 bytes -> 152 chars
48-63 chars -> 130 bytes -> 176 chars
64-79 chars -> 146 bytes -> 196 chars
...
112-127 chars -> 194 bytes -> 260 chars

你可能感兴趣的:(Java开发)