0

文字列を新しい文字列として圧縮/変換したい。

すなわち:入力文字列:

USERNAME/REGISTERID

圧縮後の出力文字列:

<some-string-in-UTF8-format>

解凍後の出力文字列:

USERNAME/REGISTERID

この変換にはいくつかの圧縮またはハッシュメソッドがありますか?

私は、Javaまたは基本的なプロセスステップを備えたアルゴリズムを使用したソリューションを好みます。

私はすでにハフマン変換を読んで使用しようとしましたが、圧縮された出力はバイトアウトバウンドUTF-8文字セットで構成されています。

4

5 に答える 5

2

ZipOutputStreamを使用できます。

    ByteArrayOutputStream result = new ByteArrayOutputStream();
    new ZipOutputStream(result).write("myString".getBytes());
    byte[] bytes = result.toByteArray();

正しい文字列エンコーディングを理解する必要があります。この場合は、Base64表現を使用して実行されます。

于 2009-09-29T16:12:14.707 に答える
1

iconvおよびを参照してくださいmb_convert_encoding。エンコーディングについては、多分検討してbase64_encodeください。

于 2009-09-29T16:14:30.833 に答える
1

Base64commons-codecなどを見てください。

Commons-codeは、使用する非常に単純なBase64クラスを提供します。

ハッシュ関数は通常、一方向のみを対象としているため、ハッシュ関数を使用することはできません。つまり、MD5またはSHA1ハッシュが与えられた場合、ソースメッセージが何であるかを見つけるためにそれをデコードできないはずです。

于 2009-09-29T16:15:08.870 に答える
0

名前が示すように識別子のデータベースIDがある場合は、この番号をエンコードとして使用してみませんか?(必要に応じて文字列として入力してください)。

圧縮アルゴリズムを使用してより良い圧縮が得られることを期待するべきではありません。それらはすべていくつかのヘッダーを必要とし、ヘッダーサイズ自体はおそらく入力文字列よりも長いからです。

于 2009-09-29T16:12:58.280 に答える
0

誰かがユーザー名とパスワードの組み合わせを難読化するように求めているようです。これは、セキュリティが存在しない場合のセキュリティを示唆するため、おそらくお勧めできません。このためにROT13暗号化を実装し、二重ROT13を使用して復号化することもできます。

于 2009-09-29T20:02:21.497 に答える