暗号化とエンコード/デコードは初めてです。結果の文字列が小さなアルファベットのみになるように、指定された文字列を暗号化してエンコードしたい (大文字、数字、または特殊文字ではありませんか?)。エンコードには 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
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 に答える