我刚开始使用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 error 2。为什么会这样?它是否与字符串既被base 64编码又被加密有关?
密码正确。

最佳答案

base-64数据(R79gQDNTt/0+cjU7pduqfA==)不是rncryptor消息(第一个字节不正确,而且太短)。
AES加密没有“标准”格式。你必须将解密程序与加密程序匹配。rncryptor实现了一种特定的格式,它实现了大多数ad hoc解决方案中所缺少的重要安全好处。如果这些数据来自服务器,您还需要在那里使用rncryptor实现,或者重写swift代码来实现服务器正在使用的任何格式(这看起来像是一种特殊的自定义格式,所以我无法说明如何实现)。

10-06 02:33