-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

Base32は単一大文字を使用するため、目的に適しているはずです。使用できる Apache Commons のBase32 実装があります。または、独自に作成することもできます。

しかし、なぜ出力を小文字のみに制限したいのでしょうか?

于 2013-02-06T09:43:57.340 に答える
0

小文字のみを使用すると、base64ではなくなります。アルファベットが 16 個の小文字のみで構成されている場合、base16 と呼ぶことができます。そして、各ニブル (4 ビット) を文字の 1 つにマップします。

于 2013-02-06T09:37:32.237 に答える
0

を使用することをお勧めしますorg.jasypt.encryption.StringEncryptor#encrypt()

結果の暗号化テキストはBASE64でエンコードされるため、US-ASCII 文字として安全に保存されます。

于 2013-02-06T09:40:58.007 に答える