java prime256v1,java – Android Pay:公共,私钥对生成(椭圆曲线与NISTP-256)

在Android Pay中,使用`prime256v1`椭圆曲线算法生成了公钥和私钥。然而,将Base64编码的公钥传递给`createMaskedWalletRequest`时遇到异常,指出公钥的首字节必须是0x04。问题在于公钥的点格式可能不符合要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

}

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

问题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();

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

03-30 17:02:06.459 3786-15263/? E/WalletClient: Error validating

MaskedWalletRequest.paymentMethodTokenizationParameters: first byte of

parameter “publicKey” must be 0x04 (which indicates uncompressed point

format)

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

感谢您的帮助!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值