gpt4 book ai didi

ios - 使用 AES 进行数据加密

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

我正在构建一个将与服务器 (php) 通信的应用程序,并且我想加密此通信(可能会使用 json)。经过大量搜索和阅读,我找到了 AESCrypt-Objc 项目。在测试加密时(我正在使用网络工具 AES Encryption test )我发现在加密结果中我丢失了 16 字节的数据。这是我正在使用的示例在 AES 项目中:

String to be encrypted: "The quick brown fox jumped over the lazy dog". Password: "12345678901234561234567890123456"

结果:

<7eda336b 82f3e279 ae7638fe cccfffc6 5fbef8da 6df76d97 67d8cfa8 5bce2ae9>

我的代码:

self.strnToBeEnc = @"The quick brown fox jumped over the lazy dog";
self.appKey = @"12345678901234561234567890123456";
NSData *data2 = [self.strnToBeEnc dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", data2);
NSData *s2 = [data2 AES256EncryptedDataUsingKey:self.appKey error:nil];
NSLog(@"%@", s2);

网络工具:

Same string and password

结果:

<7eda336b 82f3e279 ae7638fe cccfffc6 5fbef8da 6df76d97 67d8cfa8 5bce2ae9 ca2ed34a 48f85af2 909654d5 b0de0fb7>

如您所见,我丢失了一些字节...:)我试过在算法中添加到缓冲区,但没有成功。

有什么建议吗?谢谢

(如果问题不够详细请告诉我)

最佳答案

我知道您试图避免这种情况,但我认为您可能需要花一些时间研究 AESCrypt-Objc 的源代码因为我怀疑它以某种方式没有加密最后一个 block 。

进入代码,看看您是否真的到达了 CCCryptorFinal 调用,并记下它的结果。这可以在 AESCrypt-ObjC/NSData+CommonCrypto.m 中找到_runCryptor:result: 。另一件要研究的事情是他们使用的默认填充类型,它似乎是 kCCOptionPKCS7Padding 这也会对您的结束字节产生影响。

首先使用非任意长度的字节进行测试,这些字节是 AES block 大小的倍数,然后一旦您验证了这一点,就可以继续使用此处的可变长度字节。

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

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