[英]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.