0

AES128 で暗号化された Web サービスがあります AFHTTPRequestOperationManager を使用すると、適切な応答が返されます (応答は暗号化された文字列です)。

NSString *string = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding];
NSLog(@"%@",string);

NSString *decodedString = [AES128Util AES128Decrypt:string key:Key];
NSLog(@"%@",decodedString);

キーは Android で正しく動作するため、適切です。最初の NSLog で、正しくコード化された応答を読み取りました。2 番目の NSLog で、NULL 文字列を読み取りました。ありがとう

編集: LR1JZEOE8MgbEgyZtbqSAbO5ZL5wYBCpLX0KE4PynsFZiRBJe3lvRRr0CPbf0ufuSga8dG5j6IeDBvbn1iNeLUb7cYIb+caSXZw7t8TgrYA= これは復元されたコード文字列です

4

1 に答える 1

0

暗号化には多くの問題がある可能性があり、デバッグするのはちょっと難しいです (または、バイナリの動作が機能しているか失敗していると言う必要があります...)

私は最初に、自分の鍵が優れていることを本当に確信しています。

その後、AES128Util コードを見ることができますhttps://github.com/GreenWangcl/AES128-for-iOS/blob/master/ASE128Demo/ASE128/AES128Util.m

エンコーディングは良いようです。それ以外の場合は、Latin1 などを試すことをお勧めします。

したがって、Android で動作する実装がある場合、興味深い行の 1 つが AES128Util にあるはずです。

CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                      kCCAlgorithmAES128,
                                      kCCOptionPKCS7Padding,
                                      keyPtr,
                                      kCCBlockSizeAES128,
                                      NULL,
                                      [data bytes],
                                      dataLength,
                                      buffer,
                                      bufferSize,
                                      &numBytesCrypted);

Android 実装のパディング オプションを確認してください。PKCS7 ではない可能性があります。

そうである場合、パラメーターは Android でほとんど同じである必要があり、違いを評価することができます。

Ps : 個人的に私はhttps://github.com/RNCryptor/RNCryptorを使用しており、AES 128 復号化で正常に動作します (あなたのように、Android アプリと暗号化を行うサーバーもあります)。

于 2014-11-25T22:59:24.333 に答える