iphone - 如何在 iOS 中解密 DES 加密字符串?

标签 iphone ios ipad

我使用 PHP 在 DES 算法中使用 PKCS #7 填充对字符串进行加密。

我想知道如何在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;
}
}

-- 然后你可以调用类似

的方法
  [self decryptDESByKey:[@"qwertykey" dataUsingEncoding:NSUTF8StringEncoding] data:[self encryptDESByKey:[@"qwertykey" dataUsingEncoding:NSUTF8StringEncoding] data:["YOUR--INPUT__STRING" dataUsingEncoding:NSUTF8StringEncoding]]];

-- "qwertykey"是提供的 key

关于iphone - 如何在 iOS 中解密 DES 加密字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7172179/

相关文章:

iphone - uiautomation录制的脚本保存位置

ios - 使用 NSFetchRequest 和 NSPredicate 时 SwiftUI 列表更新缓慢

iphone - UITouch 返回 UIWebBrowserView(Apple 内部组件)而不是 UIWebView

html - 有什么方法可以在 iPad 上使用 CSS 来设置 optgroup 的样式吗?

iphone - 以编程方式检索支持给定文件类型的已安装应用程序列表

iPhone——可以区分指尖和整个指腹吗?

iphone - cocos2D 中持续的基于时间的计算应该放在哪里?

ios - QuickBlox 推送通知权限警报时间自定义

java - 使用 C++ 或 Java 在 IOS 和 Android 移动应用程序上共享代码

iphone - 如何在UIActionSheet中的UITextField中启用文本输入?