Swift 使用RNCryptor解密base64编码和aes加密的字符串

Swift 使用RNCryptor解密base64编码和aes加密的字符串,swift,encryption,swift3,base64,rncryptor,Swift,Encryption,Swift3,Base64,Rncryptor,我刚刚接触RNCryptor,但我得到了一个加密和base64编码的示例字符串。我正在尝试使用RNCryptor decrypt func查看纯文本中的字符串 我尝试了以下方法: func decryptStr(_ sample : String){ let sampleBase64Decoded = sample.fromBase64Data() do { let decryptedNSData = try RNCryptor.decrypt(data: s

我刚刚接触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。为什么会这样?它是否与字符串是base 64编码的,并且也是加密的这一事实有任何关系

密码正确。

您的Base-64数据(
R79gQDNTt/0+cjU7pduqfA==
)不是RNCryptor消息(第一个字节不正确,而且太短)


AES加密没有“标准”格式。您必须将解密程序与加密程序匹配。RNCryptor实现了一种特定的格式,它实现了大多数临时解决方案中缺少的重要安全优势。如果这些数据来自服务器,您还需要在那里使用RNCryptor实现,或者重写Swift代码来实现服务器使用的任何格式(这看起来像是一种特殊的自定义格式,所以我不能说如何实现)。

加密是如何完成的?请注意,RNCryptor有自己的格式,它设计用于与RNCryptor加密的数据进行互操作。我将很快与服务器人员联系,询问他是否使用RNCryptor。看来他没有!为了澄清字符串是否使用RNCryptor PHP加密,我是否能够使用RNCryptor swift对其进行解密?正确;RNCryptor是一种格式。有十几种语言的实现。