Проблема с размером ключа для шифрования с 3des - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь записать 3des следующим кодом:

+ (NSData *)tripleDesEncryptString:(NSString *)input
                           key:(NSString *)key
                         error:(NSError **)error
{
    NSParameterAssert(input);
    NSParameterAssert(key);

    NSData *inputData = [input dataUsingEncoding:NSUTF8StringEncoding];
    NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

    size_t outLength;

    NSAssert(keyData.length == kCCKeySize3DES, @"the keyData is an invalid size");

    NSMutableData *outputData = [NSMutableData dataWithLength:(inputData.length  +  kCCBlockSize3DES)];

   CCCryptorStatus
   result = CCCrypt(kCCEncrypt, // operation
                 kCCAlgorithm3DES, // Algorithm
                 kCCOptionPKCS7Padding | kCCOptionECBMode, // options
                 keyData.bytes, // key
                 keyData.length, // keylength
                 nil,// iv
                 inputData.bytes, // dataIn
                 inputData.length, // dataInLength,
                 outputData.mutableBytes, // dataOut
                 outputData.length, // dataOutAvailable
                 &outLength); // dataOutMoved

    if (result != kCCSuccess) {
        if (error != NULL) {
            *error = [NSError errorWithDomain:@"com.your_domain.your_project_name.your_class_name."
                                     code:result
                                 userInfo:nil];
        }
    return nil;
    }
    [outputData setLength:outLength];
    return outputData;
}

Используемый ключ должен иметь длину 24 байта, но сервер возвращает симметричный ключ длиной более 24 байтов.Например: asb6kl92-98k7-6ike-a8e5-2299775b3334.Я не знаю, как преобразовать этот ключ в действительный ключ к моему алгоритму.Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...