gpt4 book ai didi

objective-c - openssl 等效于 AES256EncryptWithKey 方法

转载 作者:行者123 更新时间:2023-12-04 05:33:52 28 4
gpt4 key购买 nike

如何使用命令行 openssl 获得与以下objective-c 加密方法相同的结果?

- (NSData *)AES256EncryptWithKey:(NSString *)key {
NSData *returnData = nil;

char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);

size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesEncrypted);

if (cryptStatus == kCCSuccess) {
returnData = [[NSData alloc] initWithBytes:buffer length:numBytesEncrypted];
}

free(buffer);

return returnData;
}

我尝试了以下方法(有和没有 -nosalt),但没有成功:
openssl aes-256-ecb -nosalt -in original.txt -out encrypted.txt
openssl aes-128-ecb -nosalt -in original.txt -out encrypted.txt

最佳答案

虽然有可能,但您不应该这样做。这个 ObjC 加密代码很破。它错误地创建了 key ,这就是为什么您在使用 OpenSSL 时遇到问题的原因(它也很差地创建了 key ,但更好,并且以不同的方式)。如果您想要兼容 OpenSSL 的 ObjC 加密模块,请参阅 RNCryptor它旨在处理这个问题。如果可能的话,我会避免使用 OpenSSL,但目前没有我推荐的简单命令行替代品。

请参阅 RNCryptor 的文档了解为什么这个 ObjC 代码被破坏,以及 OpenSSl 的 aes 加密例程的问题。

关于objective-c - openssl 等效于 AES256EncryptWithKey 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231033/

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