我是加密和编码/解码的新手。我想加密和编码给定的字符串,以便结果字符串只有小字母(不是大写字母,数字或任何特殊字符?)。 Base64用于编码。是可以使用Base64实现编码并获得只有小字符的结果字符串。如果不是哪种加密方法可以给出这样的结果?提前谢谢
答案 0 :(得分:1)
public byte [] encode (byte [] data)
{
ByteArrayOutputStream output = new ByteArrayOutputStream ();
for (byte b: data)
{
output.write ((b & 0x0F) + 'a');
output.write ((((b >>> 4) & 0x0F) + 'a');
}
return output.toByteArray ();
}
public byte [] decode (byte [] encodedData)
{
int l = encodedData.length / 2;
byte [] result = new byte [l];
for (int i = 0; i < l; i++)
result [i] =
(byte)(
encodedData [l * 2] - 'a' +
((encodedData [l * 2 + 1] - 'a') << 4)
);
return result;
}
答案 1 :(得分:0)
如果您只使用小写字母,则不再是base64。 如果你的字母表只包含16个小写字母,你可以称之为base16。并将每个半字节(4位)映射到其中一个字符。
答案 2 :(得分:0)
我建议您使用org.jasypt.encryption.StringEncryptor#encrypt()
。
生成的加密文本编码为 BASE64 ,因此可以安全地存储为US-ASCII字符。
答案 3 :(得分:0)
Base32使用单个字符字符,因此它应该适合您的目的。您可以使用Apache Commons中的Base32 implementation,或者您可以自己编写。
但为什么要将输出限制为小写?