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