文字列を暗号化する既存のc++コードがあります。今、私はで同じ暗号化を行いました。 暗号化された文字列の一部が一致しています。1文字または2文字が一致しないものもあります。
なぜそれが起こっているのか理解できません。両方のコードが同じキー、ソルト、暗号化されるiv文字列を持つライブラリを呼び出すまで、両方のコードをデバッグモードで実行しました。
1バイトのパディングを変更しても、暗号化された文字列が大幅に変更されることはわかっています。しかし、ここでは1つか2つの文字が変化しているのを見ています。これがサンプルです(星の間の太字は不一致の部分です)
java:
U2FsdGVkX18xMjM0NTY3OGEL9nxFlHrWvodMqar82NT53krNkqat0rrgeV5FAJFs1vBsZIJPZ08DJVrQ * Pw * yV15HEoyECBeAZ6MTeN + ZYHRitKanY5jiRU2J0KP0F
C ++:
U2FsdGVkX18xMjM0NTY3OGEL9nxFlHrWvodMqar82NT53krNkqat0rrgeV5FAJFs1vBsZIJPZ08DJVrQ * jQ * yV15HEoyECBeAZ6MTeN + ZYHRitKanY5jiRU2J0KP0F
AES暗号化を使用しています。プロバイダーはSunJCEバージョン1.6です。プロバイダーをバウンシーキャッスルに変更してみました。それでも結果は同じです。
もう1つのサンプルを追加しました:
C ++:
U2FsdGVkX18xMjM0NTY3O * I * / BMu11HkHgnkx + dLPDU1lbfRwb + aCRrwkk7e9dy ++ MK + / 94dKLPXaZDDlWlA3gdUNyh / Fxv * oF * STgl3QgpS0XU =
java:
U2FsdGVkX18xMjM0NTY3O * D * / BMu11HkHgnkx + dLPDU1lbfRwb + aCRrwkk7e9dy ++ MK + / 94dKLPXaZDDlWlA3gdUNyh / Fxv * j9 * STgl3QgpS0XU =
アップデート:
コメントによると、base64暗号化が原因だと思います。両方の場所でLatin-1文字セットを使用しています。私がチェックできる他のもの