我正在制作一个应用程序,我必须在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'作为我的钥匙)。我不是加密专家。任何形式的帮助都将受到高度赞赏。
答案 0 :(得分:2)
您的密钥大小无效,因为您的密钥大小无效。我不确定你还期待系统告诉你什么。 3DES算法要求密钥大小为24字节,“mykey”太短。
即使除了长度问题之外,通常直接使用字符串作为加密密钥也是一个坏主意。相反,您应该使用可接受的密钥到密钥算法,例如PBKDF2。