【问题标题】:Cannot decrypt a text file via RNCryptor无法通过 RNCryptor 解密文本文件
【发布时间】:2015-04-03 20:31:58
【问题描述】:

我已使用此代码通过 RNcryptor 成功加密了一个文本文件

NSFileManager *filemgr;
NSData *databuffer;

filemgr = [NSFileManager defaultManager];
NSString *destPath = @"Users/DivyaDinesh/Downloads/abcde";
databuffer = [filemgr contentsAtPath: @"Users/DivyaDinesh/Downloads/abcd" ];

NSError *error;
NSData *encryptedData = [RNEncryptor encryptData:databuffer
                                withSettings:kRNCryptorAES256Settings
                                        password:@"ABC123"
                                           error:&error];
[encryptedData writeToFile:destPath atomically:YES];

然后我尝试使用此代码解密相同

NSString *destPath1 = @"Users/DivyaDinesh/Downloads/abcdg";
NSData *encryptedData = [NSData dataWithContentsOfFile:@"Users/DivyaDinesh/Downloads/abcde"];


NSError *error;

NSData *decryptedData = [RNDecryptor decryptData:encryptedData  withPassword:@"ABC123" error:&error];
[decryptedData writeToFile:destPath1 atomically:YES];

我得到一个空白文本文件作为输出,我在这里做错了什么?请帮忙

为什么?如何解决这个问题任何人都可以提供解决方案

【问题讨论】:

  • 那么error 参数呢? decryptedData 看起来像什么?解密中没有看到的kRNCryptorAES256Settings 参数呢?所以也许:NSData *decryptedData = [RNDecryptor decryptData:encryptedData withSettings:kRNCryptorAES256Settings password:@"ABC123" error:&error];?
  • 我试过了,实际上我从这个链接highaltitudehacks.com/2013/09/26/…得到了这个想法并修改了它
  • 请检查文件是否损坏,是否显示为 82 字节或类似的大小?您是否尝试过读取相应文件的内容并将其放入NSString?请尝试并留下回复。
  • @Mukund 是的,我确实尝试将读取文件的数据打印为字符串,但它显示为空。我用这个链接developer.apple.com/library/ios/documentation/Cocoa/Conceptual/…

标签: objective-c cocoa encryption rncryptor


【解决方案1】:

好的,如果是这样,那么我认为您的文件已损坏或系统未获取它。做一件事,尝试加密和解密另一个文件,试试它是否有效。

当您尝试在 mac 中在 textedit 中创建文本文件时,有时会在 mac 中发生这种情况,当您将其保存为 say somefile.txt 时会出现警告并说 "cannot save this document with extension txt to the end of the name" 这样,请注意,当您尝试保存时会发生这种情况它的名称末尾带有“.txt”扩展名。

我在 textedit 中创建了一个文件,当我像你在问题中所说的那样加密时,我得到它的大小为 82 字节,然后我在文本编辑中创建了另外 2 个文件并加密它们,它们也包含相同的大小 82。我是无法解密相同的文件,解密后的文件大小显示为 0bytes,根本没有内容。我不知道您是否将解密文件设为 0 字节。

然后我将我的 mac 书中不存在的文件作为源文件进行加密。令我惊讶的是,我得到了一个具有我提供的名称的加密文件,而且它也具有相同的 82 字节大小!

然后为解决方案在 textedit 中创建一个文本文件并保存为 rtf,然后转到您在系统中存储它的位置,并像这样重命名文件。

如果您的文件名是 somefile 则将其重命名为 somefile.txt。

现在尝试再次进行加密和解密,它会工作:-)

【讨论】:

    猜你喜欢
    • 2016-04-15
    • 1970-01-01
    • 2015-08-06
    • 2017-02-11
    • 1970-01-01
    • 2020-06-26
    • 2017-02-10
    • 2019-04-19
    • 2013-02-26
    相关资源
    最近更新 更多