编码给定的字节数组,使输出只有很小的字母表

时间:2013-02-06 09:33:54

标签: java encoding base64

我是加密和编码/解码的新手。我想加密和编码给定的字符串,以便结果字符串只有小字母(不是大写字母,数字或任何特殊字符?)。 Base64用于编码。是可以使用Base64实现编码并获得只有小字符的结果字符串。如果不是哪种加密方法可以给出这样的结果?提前谢谢

4 个答案:

答案 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,或者您可以自己编写。

但为什么要将输出限制为小写?