【发布时间】:2015-03-09 23:02:55
【问题描述】:
我的问题看起来像这样。我已经在卡和终端侧生成了密钥。我在终端端有卡公钥和私钥以及终端公钥和私钥,在卡端也是如此(我正在做测试,这就是为什么我在终端和卡上都有它们)。当我为私有卡和私有终端生成 KeyAgreement(终端端)时,扇区是相同的,所以生成是好的,我得到一个 24 字节(192 位)的秘密。当我在卡上生成秘密时(2 种情况,如在终端上),秘密也是相同的,但它们更短 - 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);
【问题讨论】:
标签: bouncycastle javacard elliptic-curve diffie-hellman