Ios 苹果支付-解密支付数据

Ios 苹果支付-解密支付数据,ios,encryption,ios8.1,applepay,Ios,Encryption,Ios8.1,Applepay,我正在尝试在成功获得Apple Pay授权后解密PKPaymentToken对象的paymentData属性 我试图按照说明进行操作,但我被困在解密步骤的第2步,上面说: 使用publicKeyHash键的值确定哪个商户 Apple使用公钥,然后检索相应的 商户公钥证书和私钥 我该怎么做 请告知 谢谢 publicKeyHash字段的值是……公钥的散列。根据文档,这是商户证书的X.509编码公钥字节的SHA-256散列。您可以使用它来确定哪个商户标识符用于签署支付数据(您可能只有一个商户标识符,

我正在尝试在成功获得Apple Pay授权后解密
PKPaymentToken
对象的
paymentData
属性

我试图按照说明进行操作,但我被困在解密步骤的第2步,上面说:

使用publicKeyHash键的值确定哪个商户 Apple使用公钥,然后检索相应的 商户公钥证书和私钥

我该怎么做

请告知


谢谢

publicKeyHash字段的值是……公钥的散列。根据文档,这是商户证书的X.509编码公钥字节的SHA-256散列。您可以使用它来确定哪个商户标识符用于签署支付数据(您可能只有一个商户标识符,在这种情况下,您已经知道使用的是哪个商户标识符)。

鉴于从Apple Developer Center下载的Apple Pay证书文件,下面介绍如何在Ruby中计算publicKeyHash

require "base64"
require "digest"
require "openssl"

# set cert_file = path to the downloaded Apple Pay .cer file

cert = OpenSSL::X509::Certificate.new(File.read(cert_file)) 
# strip off the "-----BEGIN PUBLIC KEY-----" line at the start of the string
pem = cert.public_key.to_pem.split("\n").drop(1)
# strip off the "-----END PUBLIC KEY-----" line at the end of the string
pem = pem.take(pem.length - 1)

decoded = Base64.decode64(pem.join)
public_key_hash = Digest::SHA256.base64digest(decoded)

好的,但是在代码中我需要做什么呢?我是否需要在应用程序包中包含商户证书,从中提取公钥,在其上生成SHA-256并检查其是否等于publicKeyHash字段?其他步骤呢?如何获取商户的私钥?您首先是如何生成商户证书的?您在生成证书时向Apple提供了私钥,因此您应该已经拥有了它。