我只是RNCryptor的新手,但我收到了一个加密和base64编码的示例字符串。我正在尝试使用RNCryptor decrypt func以纯文本格式查看字符串。
我尝试了以下内容:
func decryptStr(_ sample : String){
let sampleBase64Decoded = sample.fromBase64Data()
do {
let decryptedNSData = try RNCryptor.decrypt(data: sampleBase64Decoded!, withPassword: "secretPass")
let decryptedNSString = NSString(data: decryptedNSData, encoding: String.Encoding.utf8.rawValue)
print("decrypted : \(decryptedNSString)")
}
catch let error as NSError {
print("issue decrypting :\(error.localizedDescription)")
}
}
我这样称呼它:
decryptStr("R79gQDNTt/0+cjU7pduqfA==")
并且fromBase64看起来像这样:
extension String {
func fromBase64() -> String? {
guard let data = Data(base64Encoded: self, options: NSData.Base64DecodingOptions(rawValue: 0)) else {
return nil
}
return String(data: data, encoding: String.Encoding.utf8)!
}
}
我收到错误connect.RNCryptor.Error错误2.为什么会这样?它与字符串是基于64位编码还是加密的事实有什么关系?
密码正确。
答案 0 :(得分:3)
您的Base-64数据(R79gQDNTt/0+cjU7pduqfA==
)不是RNCryptor消息(第一个字节不正确,而且它太短)。
没有"标准" AES加密的格式。您必须将解密器与加密器匹配。 RNCryptor实现了一种特定格式,可实现大多数临时解决方案中缺少的重要安全性优势。如果这些数据来自服务器,您也需要在那里使用RNCryptor实现,或者重写您的Swift代码以实现您的服务器使用的任何格式(这看起来像一个特殊的自定义格式,所以我可以&# 39;不要说如何实现这一点。