从Base64格式(Swift)解密
下面是使用Base64->从Base64格式(Swift)解密,swift,base64,Swift,Base64,下面是使用Base64-> (ew0KICAiTmV3c0dyYXBoIjogWw0KICAgIHsNCiAgICAgICJEYXRlIjogIjA0LUZlYiIsDQogICAgICAiTmV3c1Njb3JlIjogNTAuMCwNCiAgICAgICJUYWJsZU5hbWUiOiAiTmV3c0dyYXBoIg0KICAgIH0sDQogICAge) 下面是解密字符串的扩展方法 extension String { func fromBase64() -> String
(ew0KICAiTmV3c0dyYXBoIjogWw0KICAgIHsNCiAgICAgICJEYXRlIjogIjA0LUZlYiIsDQogICAgICAiTmV3c1Njb3JlIjogNTAuMCwNCiAgICAgICJUYWJsZU5hbWUiOiAiTmV3c0dyYXBoIg0KICAgIH0sDQogICAge)
下面是解密字符串的扩展方法
extension String
{
func fromBase64() -> String
{
let data = NSData.init(base64Encoded: self, options: []) ?? NSData()
return String(data: data as Data, encoding: String.Encoding.utf8) ?? ""
}
}
“我的文本”视图中没有输出,但您将在->
但是如果我从加密字符串中提取子字符串->
ew0KICAiTmV3c0dyYXBoIjogWw0KICAgIHsNCiAgICAgICJEYXRlIjogIjA0LUZlYiIsDQogICAgICAiTmV3c1Njb3JlIjogNTAuMCwNCiAgICAgICJUYWJsZU5hbWUiOiAiTmV3c0dyYXBoIg0KICAgIH0sDQog
然后我的代码返回解密的字符串。
问题是什么?
有谁能帮忙吗
let base64 = "ew0KICAiTmV3c0dyYXBoIjogWw0KICAgIHsNCiAgICAgICJEYXRlIjogIjA0LUZlYiIsDQogICAgICAiTmV3c1Njb3JlIjogNTAuMCwNCiAgICAgICJUYWJsZU5hbWUiOiAiTmV3c0dyYXBoIg0KICAgIH0sDQogICAg"
let decodedData = Data(base64Encoded: base64)!
let decodedString = String(data: decodedData, encoding: .utf8)
print(decodedString!)
结果:
{
"NewsGraph": [
{
"Date": "04-Feb",
"NewsScore": 50.0,
"TableName": "NewsGraph"
},
{
“新闻图表”:[
{
“日期”:“2月4日”,
“新闻分数”:50.0,
“TableName”:“新闻图表”
},
问题中的Base64字符串似乎不完整,已被截断。
(
和)
不是有效的Base64字符,因此没有必要使用NSData
的初始化器,因为您只是在之后转换到数据
,只需使用数据
的初始化器即可。如果您不想传递任何选项,也不需要包含选项:
参数。您也可以只说encoding:String
的初始化器中的utf8
。有效的base64字符串中的字符数必须是4的倍数,但第一个字符串(去掉括号)有165个字符,这就是为什么NSData.init(base64编码:选项:)
无法解码。请参阅。第一个是->而不是它的解密方式。第二个是->我有太长的加密字符串(上面只是原始Api调用的一行),因此如何处理它1。Base64不是加密,而是编码。2.忽略括号,长度不正确。谢谢Zaph。我得到了答案。