1
我使用PHP在DES算法中使用PKCS#7填充字符串進行加密。如何在iOS中解密DES加密字符串?
我想知道如何在iOS中使用CCCrypt來解密DES加密字符串。欣賞它,如果你能提供一些示例代碼來幫助我。
謝謝。
我使用PHP在DES算法中使用PKCS#7填充字符串進行加密。如何在iOS中解密DES加密字符串?
我想知道如何在iOS中使用CCCrypt來解密DES加密字符串。欣賞它,如果你能提供一些示例代碼來幫助我。
謝謝。
- (NSData *)encryptDESByKey:(NSData *)key data:(NSData *)data
{
size_t numBytesEncrypted = 0;
size_t bufferSize = data.length + kCCBlockSizeDES;
void *buffer = malloc(bufferSize);
CCCryptorStatus result = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding,
key.bytes, kCCKeySizeDES,
NULL,
data.bytes, data.length,
buffer, bufferSize,
&numBytesEncrypted);
NSData *output = [NSData dataWithBytes:buffer length:numBytesEncrypted];
free(buffer);
if(result == kCCSuccess)
{
NSLog(@"encoded str %@",[output base64EncodedStringWithOptions:0]);
return output;
} else {
NSLog(@"Failed DES encrypt...");
return nil;
}
}
- (NSData *) decryptDESByKey:(NSData *)key data:(NSData *)data
{
size_t numBytesEncrypted = 0;
size_t bufferSize = data.length + kCCBlockSizeDES;
void *buffer_decrypt = malloc(bufferSize);
CCCryptorStatus result = CCCrypt(kCCDecrypt , kCCAlgorithmDES, kCCOptionPKCS7Padding,
key.bytes, kCCKeySizeDES,
NULL,
data.bytes, data.length,
buffer_decrypt, bufferSize,
&numBytesEncrypted);
NSData *output = [NSData dataWithBytes:buffer_decrypt length:numBytesEncrypted];
free(buffer_decrypt);
if(result == kCCSuccess)
{
NSString *decodedString = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding];
NSLog(@"decoded str %@",decodedString);
return output;
} else {
NSLog(@"Failed DES decrypt ...");
return nil;
}
}
- 然後你就可以調用方法一樣
3210- 「qwertykey」 是祕密密鑰提供
**這個例子不安全**:默認情況下'CCCrypt'使用CBC模式,但不提供IV。使用靜態IV是不安全的,IV需要是由每次加密唯一的CSPRNG生成的隨機字節數組,IV可以將加密數據作爲解密前綴,但不需要保密。如果使用密碼字符串,則需要使用Common Crypto支持的功能(例如PBKDF2 *)從中導出解密密鑰)。 – zaph
你嘗試過什麼? – jtbandes
我嘗試了一些CCCrypt教程,但他們都沒有談論DES。 – user403015
看看這裏:http://stackoverflow.com/questions/4611256/is-there-any-api-that-could-use-to-call-the-des-encrypt-and-decrypt-in-目標 – MByD