【问题标题】:RNCryptor: Encrypt with rncrypt (cli) then decrypt in iOS using RNDecryptorRNCryptor:使用 rncrypt (cli) 加密,然后在 iOS 中使用 RNDecryptor 解密
【发布时间】:2015-09-27 21:58:09
【问题描述】:

当我使用终端版本的 RNCryptor 加密文件然后尝试在 Objective-C 中使用 RNDecryptor 解密该文件时,我总是收到错误“未知头”。

我知道这是因为我的第一个字节是“A”而不是“2”或kRNCryptorFileVersion,但我不知道这是为什么。

如果我使用终端版本解密文件,它会像预期的那样工作。

我使用以下方法加密文件: ./rncrypt -p someKey "$(cat test.txt)" > encr.txt

这会给出如下输出: AwHcVbXbpyI7S/RBXlVhRP1coKqFmSEFDtgFaj/JGJ181qEb024uVdt7lHWqUvUvm1rwdM4yQQ+gsMepHhR58v054qvhO4yu98N2bHGuV28aUA==

要在 iOS 中解密它,我正在执行以下操作:

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"encr" ofType:@"txt"];
NSData *data = [NSData dataWithContentsOfFile:resourcePath];

NSError *error;
NSData *uncrypted = [RNDecryptor decryptData:data withPassword:@"someKey" error:&error];

我做错了什么?

【问题讨论】:

    标签: ios objective-c encryption rncryptor


    【解决方案1】:

    rncrypt 测试程序输出 base64 编码数据。在将其传递给解密器之前,您需要对其进行解码。见[NSData initWithBase64EncodedData:options:]

    请注意,如果kRNCryptorFileVersion 为 2,则说明您使用的是稍微损坏的 RNCryptor 版本,它对多字节密码(例如中文)的安全性较差。我强烈建议使用 v3 格式的更高版本。

    【讨论】:

    • 感谢您的回答。我会尽快尝试并回复您。 (我正在使用 v3 顺便说一句)
    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2015-01-10
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多