第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將十六進制公鑰轉換為 ASN.1 主題公共密鑰信息結構,用于迪菲-赫爾曼密鑰交換?

如何將十六進制公鑰轉換為 ASN.1 主題公共密鑰信息結構,用于迪菲-赫爾曼密鑰交換?

繁星點點滴滴 2022-09-22 10:13:48
我正在嘗試實現迪菲-赫爾曼密鑰交換,以使用JAVA加密包生成用于加密/解密的對稱密鑰。這需要雙方之間的公鑰交換??蛻舳斯蚕淼墓€是 1024 位十六進制字符串,應用于計算共享密鑰。如何將此字符串轉換為編碼的密鑰格式(ASN.1 主題公鑰信息結構)以創(chuàng)建公鑰對象??紤]一個示例公鑰字符串。參數 p 和 g 被饋送到輸入DH參數規(guī)格對象中。示例實現:自動生成密鑰對:    KeyPairGenerator clientKpairGen = keyPairGenerator.getInstance("DiffieHellman");    clientKpairGen.initialize(inputDHParameterSpec);    KeyPair clientKpair = clientKpairGen.generateKeyPair();    byte[] clientPubKeyEnc = clientKpair.getPublic().getEncoded();    X509EncodedKeySpec testPubKeySpec = new X509EncodedKeySpec(clientPubKeyEnc);    KeyFactory keyFactory = KeyFactory.getInstance("DiffieHellman");    PublicKey clientPubKey = keyFactory.generatePublic(testPubKeySpec);十六進制公鑰 - 失?。?nbsp;   String testPublicKey = "85f04dd00345642ad12b65bd1a7c38728bff0b8e281ddb6ac4f2739e82a02145daabf23d173c933913b1f844059710e9125591569de427eae1d269accbfa3305069deb7622d1da3ad9820d11bd24fdcce5381d2df99bda314394738dfcbe210eae247b1303e79297ff746cd919e189f6a5776e6ecc24c8900de0f38f159072de";    X509EncodedKeySpec testPubKeySpec = new X509EncodedKeySpec(hexStringToByteArray(testPublicKey));    KeyFactory keyFactory = KeyFactory.getInstance("DiffieHellman");    PublicKey clientPubKey = keyFactory.generatePublic(testPubKeySpec);//Failing here在第一個代碼塊中創(chuàng)建的byte[] 具有 ASN.1 編碼格式的公鑰,但十六進制字符串到字節(jié)數組(testPublicKey)僅將十六進制轉換為字節(jié) []。因此,在標記的行上獲得以下錯誤。Exception in thread "main" java.security.spec.InvalidKeySpecException: Inappropriate key specification    at com.sun.crypto.provider.DHKeyFactory.engineGeneratePublic(DHKeyFactory.java:85)    at java.security.KeyFactory.generatePublic(KeyFactory.java:334)    at MWK_DHGen.main(MWK_DHGen.java:87)Caused by: java.security.InvalidKeyException: Error parsing key encoding    at com.sun.crypto.provider.DHPublicKey.<init>(DHPublicKey.java:178)    at com.sun.crypto.provider.DHKeyFactory.engineGeneratePublic(DHKeyFactory.java:78)    ... 2 more有人可以幫助如何將這個十六進制轉換為這里所要求的格式嗎?還鼓勵使用此十六進制字符串來獲取密鑰的不同實現。
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

如果您已經擁有域參數(p,g)并且只有公鑰的整數值,那么DHP公共密鑰規(guī)格而不是a是要走的路:X509EncodedKeySpec

String testPublicKey = "85f04dd00345642ad12b65bd1a7c38728bff0b8e281ddb6ac4f2739e82a02145daabf23d173c933913b1f844059710e9125591569de427eae1d269accbfa3305069deb7622d1da3ad9820d11bd24fdcce5381d2df99bda314394738dfcbe210eae247b1303e79297ff746cd919e189f6a5776e6ecc24c8900de0f38f159072de";

BigInteger publicKeyInteger = new BigInteger(testPublicKey, 16);

KeyFactory keyFactory = KeyFactory.getInstance("DiffieHellman");

PublicKey clientPubKey = keyFactory.generatePublic(new DHPublicKeySpec(publicKeyInteger, g, p));




查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號