带有HashAlgorithm“ SHA-256”签名的JSON传递base64数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有HashAlgorithm“ SHA-256”签名的JSON传递base64数据相关的知识,希望对你有一定的参考价值。
我似乎无法在网上找到与此有关的帮助。
我有一个SQL开发人员创建的JSON端点,我需要发布以下JSON来接收我的数据。
"Command": "abc",
"Data": "base64(xData)",
"Signature" : "xyz"
xData是JSON格式的数据或RSA加密的JSON格式的数据(如果已分发公钥)。签名为Base64(xdata)十六进制中的HashAlgorithm“ SHA-256”]
我已经学会了对base 64进行编码。
let combinedString = "sebastien"
let data = combinedString.data(using: .utf8)//Here combinedString is your string
let encodingString = data?.base64EncodedString()
print(encodingString!)
我的问题是:-如何在基础64 xData上添加SHA-256签名?-如何撤消该过程并使用签名来确认xData是否受到好评?-如何对64位xData进行解码?
答案
最终代码如下:
let str = "John"
if let base64Str = str.base64Encoded()
print("Base64 encoded string: \"\(base64Str)\"")
let data = base64Str.sha256Signature()
print("SHA256 Signature on the encoded base64 data: \"\(data)\"")
if let trs = base64Str.base64Decoded()
print("Base64 decoded string: \"\(trs)\"")
extension String
func sha256Signature() -> String
if let stringData = self.data(using: String.Encoding.utf8)
return hexStringFromData(input: digest(input: stringData as NSData))
return ""
private func digest(input : NSData) -> NSData
let digestLength = Int(CC_SHA256_DIGEST_LENGTH)
var hash = [UInt8](repeating: 0, count: digestLength)
CC_SHA256(input.bytes, UInt32(input.length), &hash)
return NSData(bytes: hash, length: digestLength)
private func hexStringFromData(input: NSData) -> String
var bytes = [UInt8](repeating: 0, count: input.length)
input.getBytes(&bytes, length: input.length)
var hexString = ""
for byte in bytes
hexString += String(format:"%02x", UInt8(byte))
return hexString
以上是关于带有HashAlgorithm“ SHA-256”签名的JSON传递base64数据的主要内容,如果未能解决你的问题,请参考以下文章