解码 base64 + 解密 - Swift

Posted

技术标签:

【中文标题】解码 base64 + 解密 - Swift【英文标题】:Decode base64 + decrypt - Swift 【发布时间】:2017-04-26 22:18:23 【问题描述】:
let originalMsg:String = "THIS IS A TEST"
let sessionData = originalMsg.dataUsingEncoding(NSUTF8StringEncoding)        
var encryptedPublic:NSData = RNCryptor.encryptData(sessionData!, password: ProjectConstants.MessageEncrypt.PUBLIC_KEY)
var base64EncodedPublic:NSData = encryptedPublic.base64EncodedDataWithOptions([])
var encryptedPrivate = RNCryptor.encryptData(base64EncodedPublic, password: privateKey)
var base64EncodedString:String = encryptedPrivate.base64EncodedStringWithOptions([])

您将如何解码 + 解密 base64EncodedString 以获得原始输入?我想我正在为 base64 解码而苦苦挣扎。

【问题讨论】:

【参考方案1】:

这是您在 Swift 2 中从 base64 字符串获取 UTF-8 编码的NSString 的方式:

let decodedData = NSData(base64EncodedString: base64EncodedString,
                         options: NSDataBase64DecodingOptions.fromRaw(0)!)
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)

但如果你想解密,你只需要数据:

do 
    let decodedData = NSData(base64EncodedString: base64EncodedString,
                         options: NSDataBase64DecodingOptions.fromRaw(0)!)
    let decryptedPrivate = RNDecryptor.decryptData(decodedData, password: privateKey)
    let decodedPrivate = NSData(base64EncodedData: decryptedPrivate,
                            options: NSDataBase64DecodingOptions.fromRaw(0)!)
    let decryptedPublic = RNDecryptor.decryptData(decodedPrivate, password: ProjectConstants.MessageEncrypt.PUBLIC_KEY)
    let decryptedMessage = NSString(data: decryptedPublic, encoding: NSUTF8StringEncoding) as String
 catch 
  // handle decryption errors...

【讨论】:

以上是关于解码 base64 + 解密 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

为啥我用Base64加密后,不能将它解密?

Java Base64 加密/解密

使用 Swift 4 解密 MD5 base64

[转]Base64 算法原理,以及编码解码加密解密 介绍

python3url编解码base64编解码ASE加解密

php解密 base64