【发布时间】:2012-08-23 00:58:45
【问题描述】:
我正在开发一个加密应用程序,该应用程序现在对纯文本文件进行加密。我需要一些连接方面的帮助以及如何进行实际加密。我收到了这个sn-p的代码来加密一个文件,但我有点困惑。我需要做的是有一个按钮(加密)来获取这个文本文件并对其进行加密。我应该先提取文件的内容,然后加密吗?怎么会这样?该程序必须知道选择了哪个文件以便对其进行加密,而我现在是一个完全的菜鸟,我需要一些帮助。
分步说明将不胜感激。
这是代码:
- (NSData*) encryptString:(NSString*)plaintext withKey:(NSString*)key {
return [[plaintext dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
}
我已经使用以下 sn-p 实现了一个文件选择器:
- (IBAction)fileChooser:(id)sender {
int i;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:YES];
[openDlg setPrompt:@"Select"];
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton )
{
NSArray* files = [openDlg filenames];
for( i = 0; i < [files count]; i++ )
{
[files objectAtIndex:i];
}
}
}
【问题讨论】:
-
你在正确的轨道上。你有你的文件。现在你需要做的是提取文本,这样你就可以将它传递给你的 encryptString 方法(看看 NSString,我相信它是 stringWithContentsOfFile)。加密字符串后,您将拥有一个 NSData 实例。您需要做的就是用该数据编写一个新文件(查看 NSData,writeToFile)。希望有人能够为您留下更详细的答案,但这应该会让您继续前进。
-
非常感谢。我想知道,我应该如何将这个 NSString 方法连接到一个按钮,但是如果我只是想在它上面包裹一个 IBAction,它就不起作用,再次请忽略我的无知。谢谢!
-
您应该在您的类中为一个控制器对象实现 action 方法,该对象要么加载包含窗口(和按钮)的 nib,要么位于同一个 nib 中。在非基于文档的应用程序中,此对象要么是应用程序的委托,要么由作为应用程序委托的对象创建。我走后一条路线,因为它使我的代码更有条理。
标签: cocoa file encryption aes