2017-11-23 7 views
0

10-16バイトのキーを使用して250文字を暗号化するアルゴリズムまたは方法はありますか?暗号化された文字列のサイズは16文字未満ですか?私はAES 128/256 + DEFLATEを使ってみましたが、最終的に暗号化された文字列は期待される文字列の長さに関してかなり大きいです。250文字と16バイトのキーから小さな暗号化された出力(約16バイト)を生成する方法はありますか?

ありがとうございます!

+2

いいえ、ランダムなデータを20倍に縮小できるアルゴリズムはありません。これは情報理論の法則に違反します。 –

+0

「期待文字列長さ」とはどういう意味ですか?あなたが期待しているのは正確に何ですか? –

答えて

1

まず、暗号化する前に圧縮を試みる必要があります。 「AES 128/256 + DEFLATE」が圧縮前の暗号化を意味する場合、暗号化されたデータが圧縮器に対して事実上ランダムであるため、決して圧縮されません。

第2に、たとえあったとしても、たった250文字で多くの圧縮を期待することはありません。コンプレッサーはパターンを探すよりも多くのデータを必要とします。

第3に、大量のデータがあっても、冗長性の高いデータ以外に16倍の圧縮率を得ることはできません。

0

技術的には可能ですが、「文字」の定義に依存します。

例えば、Noëlは4文字であると思うかもしれません。しかし、Unicodeを使用した、それは実際には5つのコードポイントです:

  • N + o + + ¨ + le(分音記号を組み合わせて使用​​すると、Uを使用+ 0308)の組み合わせ発音区別符号が面白いです

。分音符号を積み重ねることができます。それでも4 「文字」を持っていながら、だから、あなたは余分なコード・ポイントのすべての種類がある -

  • ノエル

を上記のテキストは、4 「文字」ですが、あります114 コードポイント

発音区別符を追加すると、文字ごとにさらに多くの情報が得られます。

次は、Unicodeに大きなアルファベットが含まれているということです。アルファベットを他のプレーンに拡張すると、多くの情報をエンコードできます。それはベース64と似ていますが、ベースは195088です。

StackOverflowのTwitterのエンコーディング挑戦をオフに基づいています。いくつか「文字」に多くの情報を詰め込むの詳細については

、このstackexchangeコードチャレンジを参照してください。

これは、16文字または16バイトがあるかどうかによって大きく異なります。

+0

私のブラウザではとても面白いですね。 – martinstoeckli

0

説明するアルゴリズムは、キー付きハッシュです。切り詰められたHmac/sha256は仕様に適合します。つまり、生成されたハッシュの最初の16バイトのみを使用します。 もちろん、これは不可逆的です。

関連する問題