小编Shy*_*der的帖子

Android Pay:公共,私钥对生成(带NISTP-256的椭圆曲线)

Android Pay问题

在Android Pay中,从信用卡生成令牌的过程如下:

生成公钥和私钥(下面的调用使用带有NISTP-256算法的椭圆曲线返回键)

为此,我打电话给...

public static KeyPair generateKeyPair() {
  KeyPair pair =null;
  try {
    ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("prime256v1");
    java.security.KeyPairGenerator g = KeyPairGenerator.getInstance("EC");
    g.initialize(ecGenSpec, new SecureRandom());
    pair = g.generateKeyPair();
    pair.getPrivate();
    pair.getPublic();
  }catch (Throwable e ){
    e.printStackTrace();
  }
  return pair;
}
Run Code Online (Sandbox Code Playgroud)

...这成功返回公钥和私钥,但我不确定密钥的格式/编码是什么.我找不到任何关于此的文档.

问题1:这是为Android Pay生成公钥和私钥的正确方法吗?

将base64编码格式的公钥传递给Android Pay createMaskedWalletRequet方法(详情请参阅Android Pay文档)

String publicKey = String (Base64.encodeBase64(pair.getPublic().getEncoded()));

PaymentMethodTokenizationParameters parameters = PaymentMethodTokenizationParameters.newBuilder().setPaymentMethodTokenizationType(PaymentMethodTokenizationType.NETWORK_TOKEN).addParameter("publicKey", publicKey).build();
Run Code Online (Sandbox Code Playgroud)

在这里,我得到以下异常:

03-30 17:02:06.459 3786-15263 /?E/WalletClient:错误验证MaskedWalletRequest.paymentMethodTokenizationParameters:参数"公钥"第一字节必须是0×04(表示未压缩的点格式)

问题2:你能帮我理解我做错了什么.我认为这可能与格式不匹配有关,但不确定,也不确定如何修复它.

感谢您的帮助!!

java android android-pay

6
推荐指数
1
解决办法
1843
查看次数

标签 统计

android ×1

android-pay ×1

java ×1