我想在
Swift 3中转换以下十六进制编码的字符串:
dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4
到它的等效字符串:
ܰJ:\ص7cï ¼f«à)ýë®^A~/ü*¤
以下网站的工作非常好:
http://codebeautify.org/hex-string-converter
http://string-functions.com/hex-string.aspx
但我无法在Swift 3中做同样的事情.以下代码也不能完成这项工作:
func convertHexStringTonormalString(hexString:String)->String!{ if let data = hexString.data(using: .utf8){ return String.init(data:data,encoding: .utf8) }else{ return nil} }
解决方法
您希望将十六进制编码数据用作AES密钥,但是
数据不是有效的UTF-8序列.你可以解释
它作为ISO拉丁语编码中的字符串,但AES(键:字符串,…)
初始化程序将字符串转换回其UTF-8表示形式,
即,您将获得与您开始时不同的关键数据.
数据不是有效的UTF-8序列.你可以解释
它作为ISO拉丁语编码中的字符串,但AES(键:字符串,…)
初始化程序将字符串转换回其UTF-8表示形式,
即,您将获得与您开始时不同的关键数据.
因此,您根本不应将其转换为字符串.使用
extension Data { init?(fromHexEncodedString string: String) }
从hex/binary string conversion in Swift开始的方法
将十六进制编码的字符串转换为Data然后传递它
作为AES的数组(键:数组< UInt8>,…)初始值设定项:
let hexkey = "dcb04a9e103a5cd8b53763051cef09bc66abe029fdebae5e1d417e2ffc2a07a4" let key = Array(Data(fromHexEncodedString: hexkey)!) let encrypted = try AES(key: key,....)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。