繁体   English   中英

在iOS中使用ECB进行3DES加密/解密

[英]3DES Encryption / Decryption using ECB in iOS

我正在制作一个应用程序,我必须在ECB模式下使用3DES加密来加密字符串。 我使用“mykey”作为关键。

+ (NSData *)tripleDesEncryptData:(NSData *)inputData
                             key:(NSData *)keyData
                           error:(NSError **)error
{
NSParameterAssert(inputData);
NSParameterAssert(keyData);

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
                     0, // 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];
    NSLog(@"here is my output %@",outputData);
    return outputData;
}

我因为密钥大小无效而收到异常。 (我用这个'mykey'作为我的钥匙)。 我不是加密专家。 任何形式的帮助将受到高度赞赏。

您收到“无效密钥大小”,因为您的密钥大小无效。 我不确定你还期待系统告诉你什么。 3DES算法需要24字节的密钥大小,而“mykey”太短。

即使除了长度问题之外,通常直接使用字符串作为加密密钥也是一个坏主意。 相反,您应该使用可接受的密钥到密钥算法,例如PBKDF2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM