私はいくつかの暗号化/復号化アルゴリズムを研究していました。暗号化されたbyte []配列の長さは常に33で、char []配列の長さは常に44でした。暗号化されたバイト配列とchar []表現の長さが異なるのはなぜですか?
(私はラインダール暗号化を使用しています。)
私はいくつかの暗号化/復号化アルゴリズムを研究していました。暗号化されたbyte []配列の長さは常に33で、char []配列の長さは常に44でした。暗号化されたバイト配列とchar []表現の長さが異なるのはなぜですか?
(私はラインダール暗号化を使用しています。)
Paddingおよびtext encoding。ほとんどの暗号化アルゴリズムはブロックサイズを持ち、そのブロックサイズの倍数まで入力をパディングする必要があります。また、バイナリデータをテキストに変換するには通常、Base64 algorithmが必要です。これは3バイトを4文字に展開します。
いや、まったくアイデアが、私の最初の考えはあなたの暗号化アルゴリズムが、それは、出力データから10あたり1ビットを削除するように構築されていることだろう。我々は、すべての暗号化アルゴリズムのために確かに真実ではない
:-)ここに出てから、あなたのコードを見ることができないので、
あなただけが確実に知ることができ、それはちょうどあなたが使用している特定の一つの性質でなければなりません。どのアルゴリズムがわからなくてもわかりますが、比率33/44はアルゴリズムが各文字を出力バイト配列の6ビットに圧縮している可能性があることを示しています。これはおそらく、64文字を超える別個の文字が使用されていると仮定していることを意味しています。これは、プレーンテキストの良い仮定です(実際は、base64のデコード方法です)。
また、使用しているアルゴリズムがわからなくても、これはすべて推測です。
私はRijndaelを使用しています。ありがとう。 – devlord
使用している暗号化を知らないと、正確な原因を特定するのが少し難しいです。まず、記事はHow to Calculate the Size of Encrypted Dataです。あなたが平文のハッシュを使用しているように聞こえるので、結果がより短くなります。
編集:ソースがRijndael ImplementationのHeresです。暗号文の出力は、最初は平文の入力と同じ長さで、それからbase64を行います。これは前述のポスターのように、最終出力を元の入力の3/4に減らします。
バイトを1対1に置き換えたのであれば、それは非常に厄介な暗号化アルゴリズムになります。それは50年前の最先端の技術で、it didn't work very well even thenでした。 :)
だからBase64の所有物です!それはたくさん説明します。どうもありがとうございました! – devlord