-1

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

4

4 回答 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 回答
0

Base32使用单大小写字符,因此它应该适合您的目的。您可以使用来自 Apache Commons的Base32 实现,或者您可以自己编写。

但是为什么你只想将你的输出限制为小写呢?

于 2013-02-06T09:43:57.340 回答