正如标题所述:
byte[] encrypted = CryptUtils.encrypt(data, key);
System.out.println(encrypted.length);
System.out.println(new BigInteger(1, encrypted));
System.out.println(Hex.encodeHexString(encrypted));
System.out.println(Base64.encodeBase64URLSafeString(encrypted));
输出:
256
7168009243437822369854296216469732927594459719440755727503201192530003257397163143550783701334794173832880442110749731484646074400131932467256279320823407781569648004807653365193397061746088055905459344661520563977412309879548615096199872078298147648980941323616588222390445048851049622860590706553997636199882023404309651714685195366372945729024803306545341378698784529621539295122723246344789485664483371790124134351446837929993273793110653964164218755076959002468887573158308128829469244818441239599777150957470054497913346467414443384627016093340619366633629652523989548335430064353047141257059570514456595059522
38c815051cbe7d70b4498cb0899626bfbb42d973025f73ccb7bac5b927a2e5454fd1fff95a0457450039e19c545b88fb5065569e0f60d787d90e7f7701d8db39b2fbcf7500aa3a94b6f0a893a8892b55e0bedeb1cec0ab6adb4bffecd758ccd675ea51d3f090d266adca9e5a72ab0448426585e5ea306eea7f3607cd952a1a7b4a07bceba063ef04fa462c92ebffc65a35850aa37a31a405e98531e52631577e944bc0f22fcae33c9c93d6ff5d384e066a3c8b620abb5019aeeec8143acf74018a7eff33744ac94a6ac1f736a74868986759b24fb66a0274665f70ac5a27e1ab0e983931f3173dcb61610700b743de6a1e85653a2424bba671aa39debc3ed342
OMgVBRy-fXC0SYywiZYmv7tC2XMCX3PMt7rFuSei5UVP0f_5WgRXRQA54ZxUW4j7UGVWng9g14fZDn93AdjbObL7z3UAqjqUtvCok6iJK1Xgvt6xzsCrattL_-zXWMzWdepR0_CQ0matyp5acqsESEJlheXqMG7qfzYHzZUqGntKB7zroGPvBPpGLJLr_8ZaNYUKo3oxpAXphTHlJjFXfpRLwPIvyuM8nJPW_104TgZqPItiCrtQGa7uyBQ6z3QBin7_M3RKyUpqwfc2p0homGdZsk-2agJ0Zl9wrFon4asOmDkx8xc9y2FhBwC3Q95qHoVlOiQku6ZxqjnevD7TQg
是否有比base64更短的可理解形式?
什么是最短的?
答案 0 :(得分:1)
最短需要一些澄清。但如果我们谈论打印它(到控制台),我们暗示人类可读的角色。
可在所有终端上显示的人类可读字符集基本上是英文字母(大写和小写字母),数字加上一些符号,总共小于128. 2的最大功率小于128是64这是Base64编码的元素数。
基本上你想用一个字符集表示字节,其大小是2的幂(因为一个字节是一个整数位:8)所以字节和可显示字符的索引之间的转换将很容易,快。
使用比64更大的字符集必须使用可能无法在所有终端上显示的字符,或者不能在URL或文件名等中使用。
如果您希望Base64同时具有紧凑,可读,高效和便携性,那么它是您最好的选择。你可能会考虑Base128,如果你愿意牺牲一些可移植性来获得略短的代表性。
请注意,如果您只想让它在支持某些范围的unicode字符的特定终端/应用程序上工作,您甚至可能会将1个字节显示为一个字符,在这种情况下,文本(字符)长度将与字节相同长度,甚至更多,1个unicode字符可以代表2个字节。
答案 1 :(得分:1)
我找到的最短的是basE91,您可以在http://base91.sourceforge.net/找到