gpt4 book ai didi

ios - 在 IOS 中使用 AES 加密

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:39 25 4
gpt4 key购买 nike

我在加密时遇到问题。

服务器正在发送经过 aes256 加密然后进行 base64 编码的 json 数据。而在 ios 客户端中,我能够获得响应并使用 base64 对其进行解码。AES256 解密适用于某些库(第 3 方或围绕 CommonCryptor.h 的包装器),但不适用于其他库。当解密工作时,解析不工作。

以下是包装器库和相应的代码。

RNC加密器

( https://github.com/rnapier/RNCryptor )

NSData *decodedData = [Util decode:data];
NSData *RNDecryptedData = [RNDecryptor decryptData:decodedData withPassword:randomString error:&error];

if (error == nil) {
NSLog(@"RNDecryptedData - %@",[Util hexStringFromData:RNDecryptedData]);
response = [NSJSONSerialization JSONObjectWithData:RNDecryptedData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"response - %@",response);
NSLog(@"error1 - %@",error);
} else
NSLog(@"error2 - %@",error);

解密时出现以下错误。

EncryptedParsing[4402:70b] error2 - Error Domain=net.robnapier.RNCryptManager Code=2 "Unknown header" UserInfo=0x8c6bd60 {NSLocalizedDescription=Unknown header}

CCrypto

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

NSData *decodedData = [Util decode:data];
NSData *CCDecryptedData = [decodedData decryptedAES256DataUsingKey:randomString error:&error];

if (error == nil) {
response = [NSJSONSerialization JSONObjectWithData:CCDecryptedData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"response - %@",response);
NSLog(@"error1 - %@",error);
} else
NSLog(@"error2 - %@",error);

这里我得到了解密的数据,但是在解析它时出现了以下错误

EncryptedParsing[4469:70b] error1 - Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8a51520 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

NSData+AES256

( http://pastie.org/426530 )

NSData *decodedData = [Util decode:data];
NSData *AES256DecryptedData = [decodedData AES256DecryptWithKey:randomString];

response = [NSJSONSerialization JSONObjectWithData:AES256DecryptedData options:NSJSONReadingMutableLeaves error:&error];
NSLog(@"error - %@",error);

我正在获取解密数据,但在解析时出现以下错误

EncryptedParsing[4646:70b] error - Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8a710c0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

除此之外,我还使用了 CocoaSecurity ( https://github.com/kelp404/CocoaSecurity )但它不起作用。

我正在使用 NSData+Base64 ( https://github.com/l4u/NSData-Base64 ) 进行 base64 解码

顺便说一句,服务器端没有问题(我们测试过)。

我想知道我正在做的错误。或者有什么其他方法可以实现吗

最佳答案

没有通用的标准方法来对 AES 加密数据进行编码。您需要双方就如何对所需的各种元数据进行编码达成一致。

RNCryptor 解密失败,因为它希望数据在 RNCryptor format 中.

CCCrypto 和 AES256DecryptWithKey 对 key 的解释可能与您预期的不同。两者都不会验证您传递的 key 是否正确,因此您可能会得到垃圾。如果是这种情况,我希望对于某些消息,您会收到无用信息,而对于其他消息,您什么也得不到,或者出现错误。

RNCryptor如果您需要跨平台解决方案,可以使用多种语言实现。如果您需要符合服务器格式(从代码的外观来看可能不是安全加密),那么您需要提供服务器代码以确定正确的客户端代码。

关于ios - 在 IOS 中使用 AES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20567286/

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