gpt4 book ai didi

bouncycaSTLe - Javacard KeyAgreement 与 BouncyCaSTLe KeyAgreement 不同

转载 作者:行者123 更新时间:2023-12-04 05:32:05 27 4
gpt4 key购买 nike

我的问题看起来像这样。我已经在卡和终端侧生成了 key 。我在终端端有卡公钥和私钥以及终端公钥和私钥,在卡端也是如此(我正在做测试,所以这就是为什么我在终端和卡上都有它们)。当我为私有(private)卡和私有(private)终端生成 KeyAgreement(终端端)时,扇区是相同的,所以生成没问题,我得到一个 24 字节(192 位)的 secret 。当我在卡上生成 secret 时(2 例,如在终端上), secret 也相同,但它们更短 - 20 字节(160 位)。这是生成代码。终点站:

ECPublicKey publicKey;
ECPrivateKey privateKey;

...
KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH", "BC");
aKeyAgree.init(privateKey);
aKeyAgree.doPhase(publicKey, true);
byte[] aSecret = aKeyAgree.generateSecret();

和卡面:
eyAgreement = KeyAgreement.getInstance(KeyAgreement.ALG_EC_SVDP_DH, false);
short length = terminalEcPublicKey.getW(array, (short) 0);

keyAgreement.init(cardEcPrivateKey);
short secretlength = keyAgreement.generateSecret(array, (short)0, length, buffer, (short)0);

最佳答案

您的 KeyAgreement.ALG_EC_SVDP_DH 的实现存在问题在终端侧。这种 key 协商方法的正确输出长度应始终为 20 字节,因为在派生输出上执行 SHA-1。

因此,在您的终端端,您应该在生成 secret 数据后执行 SHA-1。

关于bouncycaSTLe - Javacard KeyAgreement 与 BouncyCaSTLe KeyAgreement 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953344/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com