- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 AES 256 CFB 模式解密在 Python 中加密的文件。
当我尝试在 IOS 中解密它时,它无法解密。给一些垃圾字符串。
NSString * AES_Decrypt(NSString * key, NSString * cipherText,NSString *iv)
{
@autoreleasepool {
NSMutableData * mutableCipher = [[NSMutableData alloc] init];
mutableCipher = (NSMutableData *)[cipherText dataUsingEncoding:NSUTF8StringEncoding];
char keyPtr[kCCKeySizeAES256+1];
bzero( keyPtr, sizeof(keyPtr) );
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSASCIIStringEncoding];
uint8_t iv[kCCKeySizeAES128+1];
bzero((void *) iv, (size_t) sizeof(iv));
size_t numBytesEncrypted = 0;
NSUInteger dataLength = [mutableCipher length];
size_t bufferSize = dataLength + kCCKeySizeAES128;
void *buffer_decrypt = malloc(bufferSize);
NSMutableData * output_decrypt = [[NSMutableData alloc] init];
CCCryptorStatus result = CCCrypt(kCCDecrypt , kCCAlgorithmAES128, kCCModeCFB, keyPtr, kCCKeySizeAES128, iv, [mutableCipher mutableBytes] , [mutableCipher length], buffer_decrypt, bufferSize, &numBytesEncrypted);
output_decrypt = [NSMutableData dataWithBytesNoCopy:buffer_decrypt length:numBytesEncrypted];
NSString * decryptedStr = [[NSString alloc] initWithData:output_decrypt encoding:NSASCIIStringEncoding];
NSLog(@"Decrypted String is::%@",decryptedStr);
if(result == kCCSuccess){
return decryptedStr;
}
else{
return NULL;
}
}
return NULL;
}
我使用以下参数调用它。
AES_Decrypt(@"d5a75c3377fbd50a24ae372c787d598b633e82f4210f90dfc8e618c47811d812", @"”l*®*ŸÂ€Û»†.Sì’±—ë", @"3d396f81a3443ca44ce146c91a81d3d8");
但是该方法的输出没有返回预期的输出。谁能帮我解决这个问题。
最佳答案
您不能以这种方式将任意数据编码为 NSString
。并非每个数据序列都是合法的 UTF8 字符串。
您传递的 key 不正确。您传递的 key 是 512 位长(64 字节大小的字符)。您正在获取其中的前 256 位,但这些位几乎肯定不是您要传递的 key (看起来您的意思是 key 采用十六进制格式;但您没有解码十六进制)。
您忽略了传递给您的 IV,而只是使用由零组成的 IV。
最后您将数据转换为 ASCII 字符串,但 ASCII 无法编码任意数据字符串。
加密不仅仅是调用 CCCrypt()
。如果您想要一个同时使用 Cocoa 和 Python 实现处理此问题的加密库,请参阅 RNCryptor .
(我知道这不是如何正确编写此代码的完整答案,但正确的加密实际上是一个相当复杂的主题,您应该避免尝试从头开始编写。正如您在此处看到的,它非常简单错误地做很多事情,非常小的错误会完全破坏你的安全。我在编写 RNCryptor 时非常小心,我仍然不得不多次修改它来修复安全错误。所以我强烈建议使用高-级框架,而不是尝试使用 CommonCryptor 等低级组件构建加密解决方案。)
关于ios - AES 解密互操作性 IOS 和 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19427816/
IO 设备如何知道属于它的内存中的值在memory mapped IO 中发生了变化? ? 例如,假设内存地址 0 专用于保存 VGA 设备的背景颜色。当我们更改 memory[0] 中的值时,VGA
我目前正在开发一个使用Facebook sdk登录(通过FBLoginView)的iOS应用。 一切正常,除了那些拥有较旧版本的facebook的人。 当他们按下“使用Facebook登录”按钮时,他
假设我有: this - is an - example - with some - dashesNSRange将使用`rangeOfString:@“-”拾取“-”的第一个实例,但是如果我只想要最后
Card.io SDK提供以下详细信息: 卡号,有效期,月份,年份,CVV和邮政编码。 如何从此SDK获取国家名称。 - (void)userDidProvideCreditCardInfo:(Car
iOS 应用程序如何从网络服务下载图片并在安装过程中将它们安装到用户的 iOS 设备上?可能吗? 最佳答案 您无法控制应用在用户设备上的安装,因此无法在安装过程中下载其他数据。 只需在安装后首次启动应
我曾经开发过一款企业版 iOS 产品,我们公司曾将其出售给大型企业,供他们的员工使用。 该应用程序通过 AppStore 提供,企业用户获得了公司特定的配置文件(包含应用程序配置文件)以启用他们有权使
我正在尝试将 Card.io SDK 集成到我的 iOS 应用程序中。我想为 CardIO ui 做一个简单的本地化,如更改取消按钮标题或“在此保留信用卡”提示文本。 我在 github 上找到了这个
我正在使用 CardIOView 和 CardIOViewDelegate 类,没有可以设置为 YES 的 BOOL 来扫描 collectCardholderName。我可以看到它在 CardIOP
我有一个集成了通话工具包的 voip 应用程序。每次我从我的 voip 应用程序调用时,都会在 native 电话应用程序中创建一个新的最近通话记录。我在 voip 应用程序中也有自定义联系人(电话应
iOS 应用程序如何知道应用程序打开时屏幕上是否已经有键盘?应用程序运行后,它可以接收键盘显示/隐藏通知。但是,如果应用程序在分屏模式下作为辅助应用程序打开,而主应用程序已经显示键盘,则辅助应用程序不
我在模拟器中收到以下错误: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
如 Apple 文档所示,可以通过 EAAccessory Framework 与经过认证的配件(由 Apple 认证)进行通信。但是我有点困惑,因为一些帖子告诉我它也可以通过 CoreBluetoo
尽管现在的调试器已经很不错了,但有时找出应用程序中正在发生的事情的最好方法仍然是古老的 NSLog。当您连接到计算机时,这样做很容易; Xcode 会帮助弹出日志查看器面板,然后就可以了。当您不在办公
在我的 iOS 应用程序中,我定义了一些兴趣点。其中一些有一个 Kontakt.io 信标的名称,它绑定(bind)到一个特定的 PoI(我的意思是通常贴在信标标签上的名称)。现在我想在附近发现信标,
我正在为警报提示创建一个 trigger.io 插件。尝试从警报提示返回数据。这是我的代码: // Prompt + (void)show_prompt:(ForgeTask*)task{
您好,我是 Apple iOS 的新手。我阅读并搜索了很多关于推送通知的文章,但我没有发现任何关于 APNS 从 io4 到 ios 6 的新更新的信息。任何人都可以向我提供 APNS 如何在 ios
UITabBar 的高度似乎在 iOS 7 和 8/9/10/11 之间发生了变化。我发布这个问题是为了让其他人轻松找到答案。 那么:在 iPhone 和 iPad 上的 iOS 8/9/10/11
我想我可以针对不同的 iOS 版本使用不同的 Storyboard。 由于 UI 的差异,我将创建下一个 Storyboard: Main_iPhone.storyboard Main_iPad.st
我正在写一些东西,我将使用设备的 iTunes 库中的一部分音轨来覆盖 2 个视频的组合,例如: AVMutableComposition* mixComposition = [[AVMutableC
我创建了一个简单的 iOS 程序,可以顺利编译并在 iPad 模拟器上运行良好。当我告诉 XCode 4 使用我连接的 iPad 设备时,无法编译相同的程序。问题似乎是当我尝试使用附加的 iPad 时
我是一名优秀的程序员,十分优秀!