J2MEでSMSを暗号化および復号化したいのですがTEA
、アルゴリズムを試しましたが、長い暗号化テキストが生成されます。元のテキストと同じ長さの暗号化されたテキストを生成する他の軽量アルゴリズムはありますか?
2 に答える
ストリームチッパー(RC4など)を確認します。それらはスペースの必要性を増やすことはありません。暗号化されたデータは、プレーンデータと同じ長さです。
7ビットのテキストメッセージを暗号化する場合、魔女は160文字にすることができます。その後、それらは役に立ちません。ただし、プレーンテキストの最大長が140バイトの場合は、それらを使用できます。
ストリーム暗号化はこれに対して機能しますが、ストリーム暗号化でさえビットに対してのみ機能します。したがって、テキストを圧縮して、できるだけ少ないビットに収める必要があります。ほとんどの場合、デフレーションを使用すると機能しますが、短いメッセージや圧縮できないデータを含むメッセージでは失敗する可能性があります。
もう1つの方法は、メッセージを自分でできるだけ少ないビットに圧縮することです。たとえば、0..9の数字はASCII30h
から39h
。0000
ただし、バイナリ形式からバイナリ形式で保存することもできます1001
。パックされたBCDは、数値をエンコードするための優れたオプションです。数学専攻では、最小限のストレージ要件でグループと除算を使用できることがすぐにわかりますが、それによってかなりのCPUリソースが追加される可能性があります(そのソリューションを開発する楽しみを気にしないでください)。最短のバイナリ表現ができたら、ストリーム暗号で暗号化します。
これで、この素敵な短いバイナリ表現ができました。うまくいけば、それはSMSメッセージに収まるでしょう。そうでない場合は、結果のバイナリ表現をエンコードする必要があります。
基本的に、あなたがする必要があるのは:
send = Send(EncodeBin(Encrypt(EncodeTxt(plain))))
それから
plain = DecodeTxt(Decrypt(DecodeBin(Receive(send))))
しかし、それであなたを止めさせないでください:)