【发布时间】:2021-11-18 04:00:10
【问题描述】:
我有以下功能,我尝试解码(base64)、解密和创建 JSON 字典,
但是,我收到一个名为 NSCocoaErrorDomain Code=3840 "Garbage at end." 的错误,由于某些未知原因,解密会在结尾处创建 \0\0\0\0\0\0 JSON 字符串(可能是填充)。我正在使用 CryptoSwift 来解密响应。我无法找到一种方法来实现这一点,因为应该很简单,但我的代码中缺少一些重要的步骤。
import CryptoSwift
func orientation() -> Observable<AnyObject?> {
return Observable<AnyObject?>.create({ (observer) -> Disposable in
let request = Alamofire.Session.default.request(ResourcePath.Orientation.path+"2", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: ["x-remote-origin":"ios"]).responseJSON(completionHandler: { (dataResponse) in
switch (dataResponse.result) {
case .success(let value) :
print(value)
do {
let json = JSON(value)
if let response = json.dictionary {
//Now you got your value
let result = response["response"]?.string;
let iv="something".bytes;
/* AES cryptor instance */
let aes = try AES(key: self.keyForCrypting, blockMode: CBC(iv: iv))
let encryptedData = Data(base64Encoded:result!)!
let decryptedData = Data(try aes.decrypt(encryptedData.bytes))
print(decryptedData);
let decryptedText = String(data: decryptedData, encoding: .utf8)
print(decryptedText);
let jsonData = try JSON(data: decryptedData)
print(jsonData);
}
}
catch {
print(error);
observer.onError(error)
return
}
break
case .failure(let error) :
observer.onError(error)
break
}
})
return Disposables.create {
request.cancel()
}
})
}
我的 JSON 输出(print(decryptedText);)如下。
{\"oriens\":[{\"id\":\"1\",\"title\":\"Im Groom seeking a Bride\",\"search\":\"1\",\"gender\":\"M\",\"free\":\"N\",\"container\":{},\"dirtyState\":0,\"dirtyRelated\":[],\"errorMessages\":[],\"modelsManager\":{},\"modelsMetaData\":null,\"related\":[],\"operationMade\":0,\"oldSnapshot\":[],\"skipped\":null,\"snapshot\":null,\"transaction\":null,\"uniqueKey\":null,\"uniqueParams\":null,\"uniqueTypes\":null},{\"id\":\"2\",\"title\":\"Im Bride seeking a Groom\",\"search\":\"2\",\"gender\":\"F\",\"free\":\"Y\",\"container\":{},\"dirtyState\":0,\"dirtyRelated\":[],\"errorMessages\":[],\"modelsManager\":{},\"modelsMetaData\":null,\"related\":[],\"operationMade\":0,\"oldSnapshot\":[],\"skipped\":null,\"snapshot\":null,\"transaction\":null,\"uniqueKey\":null,\"uniqueParams\":null,\"uniqueTypes\":null},{\"id\":\"3\",\"title\":\"Im Boy seeking a Girl\",\"search\":\"3\",\"gender\":\"M\",\"free\":\"N\",\"container\":{},\"dirtyState\":0,\"dirtyRelated\":[],\"errorMessages\":[],\"modelsManager\":{},\"modelsMetaData\":null,\"related\":[],\"operationMade\":0,\"oldSnapshot\":[],\"skipped\":null,\"snapshot\":null,\"transaction\":null,\"uniqueKey\":null,\"uniqueParams\":null,\"uniqueTypes\":null},{\"id\":\"4\",\"title\":\"Im Girl seeking a Boy\",\"search\":\"4\",\"gender\":\"F\",\"free\":\"Y\",\"container\":{},\"dirtyState\":0,\"dirtyRelated\":[],\"errorMessages\":[],\"modelsManager\":{},\"modelsMetaData\":null,\"related\":[],\"operationMade\":0,\"oldSnapshot\":[],\"skipped\":null,\"snapshot\":null,\"transaction\":null,\"uniqueKey\":null,\"uniqueParams\":null,\"uniqueTypes\":null}]}\0\0\0\0\0\0
我的 XCode 输出是
【问题讨论】:
标签: ios json swift objective-c encryption