我只是RNCryptor的新手,但是我得到了一个示例字符串,该字符串经过加密和base64编码。我正在尝试使用RNCryptor解密函数以纯文本格式查看字符串。
我尝试了以下方法:
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。为什么会这样?这与字符串既以base 64编码又经过加密的事实有任何关系吗?
密码正确。
您的Base-64数据(R79gQDNTt/0+cjU7pduqfA==
)不是RNCryptor消息(第一个字节不正确,并且太短)。
AES加密没有“标准”格式。您必须将解密器与加密器进行匹配。RNCryptor实现了一种特定格式,该格式实现了大多数临时解决方案中所缺少的重要安全优势。如果此数据来自服务器,则也需要在其中使用RNCryptor实现,或重写Swift代码以实现服务器使用的任何格式(这看起来是临时自定义格式,所以我不能说如何实施)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句