【发布时间】:2020-03-06 11:38:27
【问题描述】:
我在 node.js 中有这段代码,它使用 Crypto 创建密钥。 我可以使用 Java 创建相同的密钥吗?
diffieHellmanConfig': {
'group': 'modp14',
'encoding': 'base64'
}
const clientDHInstance = crypto.getDiffieHellman(config.userCardCrypto.diffieHellmanConfig.group);
clientDHInstance.generateKeys();
const clientPublicKey = clientDHInstance.getPublicKey(config.userCardCrypto.diffieHellmanConfig.encoding);
我尝试使用
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(2048);
KeyPair keypair = keyGen.genKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
byte[] encoded = publicKey.getEncoded();
String s = Base64.getEncoder().encodeToString(encoded);
System.out.println(s);
但是钥匙错了
节点键是 t2EBMu8wCShfu8Dm45i9nNQ + TXyG5Oz1 / izjTwRD0dchUK2400R9cP + NjLlOqjLstXnTbG5 / aa0WaCoP187J90piiebGOjZUlF / BU / xkkrYncQHAJ403J8 + R2V5eHYCSQXbS6CSO7x + eEhNz8QTMgwkOR9w1R3gvbibaqL7qyQARPFak6 + VIKFLUakSzMvdAIjLNPu2dva1QdJixid + EYiZE / DxA7lqpje74I7wynZj7kmUZXtiIWu46suf5CaVONtjEVZilvErJNpVlPX5TXoMVNrWkl9g5Aa6moXg4K0M6Gc4taumnDr9gh4PEuw + / QVauEld27 / 5TQlfAlalvzg == P>
Java 键是 MIICKTCCARsGCSqGSIb3DQEDATCCAQwCggEBAP ////////// YQ / aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu + pjsTmyJRSgh5jjQE3e + VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL / 1y29Aa37e44a /塔伊兹+ lrp8kEXxLH + ZJKGZR7ORbPcIAfLihY78FmNpINhxV05ppFj + O / STPX4NlXSPco62WHGLzViCFUrue1SkHcJaWbWcMNU5KvJgE8XRsCMoYIXwykF5GLjbOO + OedywYDoYDmyeDouwHoo + 1xV3wb0xSyd4ry / aVWBcYOZVJfOqVauUV0iYYmPoFEBVyjlqKrKpo ////////// 8CAQICAgQAA4IBBgACggEBAI + NYSvMh0bfh1ptt62vHEHENz6ZAYvnnrwmRhQRdYMBZiqu60AvJ4F6qL99EfesxvH3n8YaC + cG7bKAqkw74rRHJXkMF5xOy / kpTVvmQGAPjvTi5o4BJtHLOBgiwFKy7CYFKFksCJzkqNdAuPri / mfMm6GNG5MBYtQIurWkgOnnrVl3Nra2CSVUixQ5zCANOSnnNYNFPanr01bI6KZXsiRZRqfA4oYxBPySy4Sp1dx2IvSQe8EjNWTicTQQj / HP7hl1yf3uiYlM4h3dMbmfqv6Y10hW8kvoD88 / mh09pdz + HxxDz + mVSMe + 3 + N7VIYUEGRHhrAvjbXmwh5zyCMIJiI =
【问题讨论】:
-
钥匙有什么问题?当您说“相同”键时,您的意思是相同的大小,对吗?或者您实际上想要生成相同的密钥实例?即字面上相同的密钥字节...当您调用 genKeyPair() 或 generateKeys() 时,您当然会根据定义获得不同的密钥材料。
-
@Woodstock Java 密钥比节点大,当我尝试将它发送到服务器时,我得到了响应 {"code":500,"message":"Supplied key is too large"}跨度>
-
你能提供两个示例键,一个来自节点,一个来自 Java,以便我看看格式吗?
-
@Woodstock 更新问题
-
好吧,我想通了,会写答案
标签: java node.js cryptography diffie-hellman