gpt4 book ai didi

android - 在 iOS 上解密 android AES 示例

转载 作者:可可西里 更新时间:2023-11-01 05:41:11 25 4
gpt4 key购买 nike

我有一个 AES 加密/解密的 Android 示例。

https://github.com/itog/CryptoSample/blob/master/src/com/pigmal/android/ex/crypto/Crypto.java#L35

我想在 iOS 上解密。这看起来几乎不可能。我发现这样做更容易,但失败了:

https://github.com/Gurpartap/AESCrypt-ObjC

我什至没有从 base64 解码得到良好的响应。这是我的代码:

NSData *encryptedData = [NSData base64DataFromString:encrypted];
// returns null
NSData *decryptedData = [encryptedData decryptedAES128DataUsingKey:[[CRYPT_SEED dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash] error:&error];
NSString* result = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];

最佳答案

首先AES是对称密码算法,需要使用完全相同的 key 进行消息加密和消息解密。

我已经检查了您的示例代码,这些是真正困扰我的事情:

  • 不同的 key :Android 示例没有为应该使用的 AES key 提供任何 getter 或 setter。否则,您将无法在 Android 和 iOS 上使用相同的 AES key 。
  • 不同的 key 大小:Android 示例似乎使用 AES-128,但 iOS 示例似乎使用 AES-256
  • 不同的密码模式:iOS 示例使用 CBC cipher mode所以你还需要交换IV (initialization vector)在您的设备之间。但是,我在 Android 示例中没有看到任何提供/获取 IV 的接口(interface)。

我相信这些是您无法使其正常工作的主要原因。如果您想使用 AES,则需要修改您的代码以在两台设备上使用相同的 key 使用相同的 cipher mode 在两个设备上也使用相同的padding 在两种设备上。

关于android - 在 iOS 上解密 android AES 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com