gpt4 book ai didi

ios使用des ecb解密base64编码的字符串

转载 作者:行者123 更新时间:2023-11-29 12:49:06 24 4
gpt4 key购买 nike

我正在尝试解密一个字符串,该字符串首先在 ecb 模式下使用 des 加密,然后在 base64 中编码。

这是我的代码:

+ (NSString *)decrypt:(NSString *)encryptedText
{
NSString *key = @"12345678";
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:encryptedText options:0];
size_t numBytesDecrypted = 0;
size_t bufferSize = [decodedData length] + kCCBlockSizeDES;
void *buffer = malloc(bufferSize);
char keyPtr[kCCKeySizeDES+1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];


CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmDES,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[decodedData bytes], [decodedData length], /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);

NSData *val = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
return [[NSString alloc] initWithData:val encoding:NSUTF8StringEncoding];
}

但是我得到的是一个 nil 字符串……有什么想法吗?

最佳答案

您正在使用 DES,但在调用 CCCrypt 时将 key 大小指定为:kCCKeySizeAES256

从安全的角度来看,这段代码有很多问题,不要在真正的应用程序中使用它。这不再是最佳实践。除其他事项外,应使用基于密码的 key 派生功能(例如 PBKDF2)将密码转换为 key 。使用 DES 和 ECB 模式也是一个弱点。

关于ios使用des ecb解密base64编码的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851693/

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