gpt4 book ai didi

objective-c - objective-c : AES 256 Encryption with NSData Key

转载 作者:行者123 更新时间:2023-12-01 16:57:04 29 4
gpt4 key购买 nike

以前我做了三重DES加密,通过定义一个方法,使用字符串 key 文件加密一些数据

+ (NSData *)tripleDESEncryptWithKey:(NSString *)key dataToEncrypt:(NSData*)convertedData   {}. 

现在,我同样在做 AES 256 加密。但这一次,我不能使用字符串作为键。我需要使用从资源文件中获取 NSData
NSData *keyData = [NSData dataWithContentsOfFile:keyPath];

由于我需要将此 key 作为参数传递,因此我尝试将其转换为字符串
NSString *key = [[NSString alloc] initWithData:keyData encoding:NSUTF8StringEncoding];

但它返回NULL。那么,如何使用数据 key 进行 AES 256 加密?

编辑:我知道我不应该使用 UTF8 编码,因为数据文件是由字符串的 Base64 编码制成的。所以现在的问题是,如何从 keyData 使用 Base64 获取字符串键?

最佳答案

如果 key返回的变量 NULL .尝试像这样使用。

NSString* key = [NSString stringWithUTF8String:[keyData bytes]];

引用 KennyTM's Answer

更新 1:您也可以直接从文件中读取字符串,而无需在 NSData 中进行转换。

通过 NSFileHandle:
NSString * path = @"your key file path";
NSFileHandle * fileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
NSData * buffer = nil;
while ((buffer = [fileHandle readDataOfLength:1024])) {
//do something with buffer
}

或使用 NSString
NSString * key = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

引用 Dave DeLong's Answer

注:确保您的 keyPath variable , 是完整路径还是相对路径的格式正确?

更新 2:您还可以使用 Matt Gallagher NSData+Base64 Class&Header 处理 Base64 编码(另见他的博客 there)

用于编码 base64
NSString * key = [[path dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];

希望对你有帮助!

关于objective-c - objective-c : AES 256 Encryption with NSData Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786289/

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