我是加密和编码/解码的新手。我想对给定的字符串进行加密和编码,以便结果字符串只有小字母(不是大写字母、数字或任何特殊字符?)。Base64 用于编码。是否可以使用 Base64 实现编码并仅获取小字符的结果字符串。如果不是,哪种加密方法可以给出这样的结果?提前致谢
问问题
2244 次
4 回答
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;
}
于 2013-02-06T09:37:14.217 回答
0
如果您只使用小写字母,它将不再是base64。如果您的字母表仅包含 16 个小写字符,则可以将其称为 base16。并将每个半字节(4 位)映射到其中一个字符。
于 2013-02-06T09:37:32.237 回答
0
我建议您使用org.jasypt.encryption.StringEncryptor#encrypt()
.
生成的加密文本采用BASE64编码,因此安全地存储为 US-ASCII 字符。
于 2013-02-06T09:40:58.007 回答