RNCryptor:使用 rncrypt (cli) 加密,然后使用 RNDecryptor 在 iOS 中解密
RNCryptor: Encrypt with rncrypt (cli) then decrypt in iOS using RNDecryptor
当我使用 RNCryptor 的终端版本加密一个文件,然后尝试使用 RNDecryptor 在 Objective-C 中解密这个文件时,我总是得到错误 "unknown header".
我理解这是因为我的第一个字节是 '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];
我做错了什么?
rncrypt
测试程序输出base64编码数据。在将其传递给解密器之前,您需要对其进行解码。参见 [NSData initWithBase64EncodedData:options:]
。
请注意,如果 kRNCryptorFileVersion
为 2,则您使用的 RNCryptor 版本略有损坏,多字节密码(例如中文)的安全性较差。我强烈建议使用 v3 格式的更高版本。
当我使用 RNCryptor 的终端版本加密一个文件,然后尝试使用 RNDecryptor 在 Objective-C 中解密这个文件时,我总是得到错误 "unknown header".
我理解这是因为我的第一个字节是 '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];
我做错了什么?
rncrypt
测试程序输出base64编码数据。在将其传递给解密器之前,您需要对其进行解码。参见 [NSData initWithBase64EncodedData:options:]
。
请注意,如果 kRNCryptorFileVersion
为 2,则您使用的 RNCryptor 版本略有损坏,多字节密码(例如中文)的安全性较差。我强烈建议使用 v3 格式的更高版本。