gpt4 book ai didi

ios - 带有 openssl 加密数据的 NSString initWithBytes 使用 NSUTF8StringEncoding 返回 nil

转载 作者:行者123 更新时间:2023-11-29 02:48:01 26 4
gpt4 key购买 nike

我遇到一个问题,我试图从 OpenSSL 创建的加密数据创建 NSString,但该字符串始终为 nil。

我用来加密和解密数据的代码取自以下链接 http://saju.net.in/code/misc/openssl_aes.c.txt

现在这是我调用加密数据的代码(当然在我的应用程序初始化中调用“aes_init”):

//-- encrypt saved data
int textLen = str.size();
char* buff = const_cast<char*>(str.c_str());

EVP_CIPHER_CTX encryptCtx;
unsigned char *ciphertext = aes_encrypt(&encryptCtx,
reinterpret_cast<unsigned char*>(buff),
&textLen);

NSString * nsstring = [[NSString alloc] initWithBytes:reinterpret_cast<const char*>(ciphertext)
length:strlen(reinterpret_cast<const char*>(ciphertext))
encoding:NSUTF8StringEncoding];
[nsstring autorelease];

UIApplication* clientApp = [UIApplication sharedApplication];
AppController* appController = ((AppController *)clientApp.delegate);
[appController saveData:nsstring]; //--> crash at this line

我尝试了不同的编码(NSASCIIStringEncoding 和 NSUnicodeStringEncoding),它们没有崩溃,但在我解码后数据完全错误。

关于如何解决这个问题有什么想法吗?

谢谢:)

最佳答案

密文,加密函数的输出,应该与随机的无法区分。这意味着可以生成任何字节值,包括不映射到字符的字节值。因此需要对密文进行编码,例如使用base 64编码。

关于ios - 带有 openssl 加密数据的 NSString initWithBytes 使用 NSUTF8StringEncoding 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870080/

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