У меня есть такая функция:
public String generatePublicKeyEncoded() throws InvalidAlgorithmParameterException, NoSuchAlgorithmException {
Serializable serializable = new SecureRandom();
BigInteger bigInteger = BigInteger.probablePrime(1024, (Random) serializable);
serializable = BigInteger.probablePrime(1024, (Random) serializable);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DH");
keyPairGenerator.initialize(new DHParameterSpec(bigInteger, (BigInteger)serializable));
this.keyPair = keyPairGenerator.generateKeyPair();
return HexEncoder.encode(this.keyPair.getPublic().getEncoded());
}
и я пытаюсь преобразовать в node. Мой код node.js:
const prime_length = 1024;
const diffHell = crypto.createDiffieHellman(prime_length);
diffHell.generateKeys('base64');
const hexPublicKey = diffHell.getPublicKey('hex')
но мой сгенерированный Java открытый ключ
308201A33082011706092A864886F70D0103013082010802818100DE4779E7F4523CA143FFE102853E671CAAAB96203B1FC3C42D0EA1CB6878FCA889C79C709DDB1190DF9073050B1AD410D34A48A6E5A1D2C1854C471528DB3C4FE48A237FC86BAA777AAB8A17750DBA7948F258BD55E480BA3FFD87076BC4B0429CE731E31A8320DC594F9BD5022CD203C95D73F5B3E91C930A0AF2FA7AEE160502818100D719835971E8A91980141201FF765392A0049841142A3C203862AF8FFBC719528F142706639BD0C614EBA72660876F5A7011B5FC08224824577324FCF847648F24A600F408BED17770AAF958CC75076164DAA5E6179BFC573F40E2B086FC18A48B67A10F7B9B7C037A7BEEEDF554764CC8653C09AA3D330CC3C30F89616D810703818500028181008EE027B916FC87BE2627CFB53F4DA76693A06EECAC8DA2A6B9155C66D60BCD9977A811B3732F72880BDE1AA259731FE37AD4284909481777444F7A3C5BCF7F287AD5F05BE45F4553CC06D599E7E3BAD6736D6BCA59EAD8B0F6C0FE980F471304AC2600A677A70CE46F2835FA6797D18FAA8A237573916E604AF40CA456CCEE1E
и ключ, сгенерированный узлом:
1b6254629d00a18333ec701558ef34b0df9b86569985799106c4d71d1fabd3c41ef25c7bf4a522498a92c983ca09e3435ebd09b51220d6ffccb296803f1718bf8cf7e0f72432b65b60d8a49d6d80fec6e708a88d2b00e2829e74534fa86a94d96a743725c6eb2076d5ac03edd909491639a359467a67fc64b9dc2fb420d822a2
Где ошибка?
Класс HexEncoder:
public class HexEncoder {
private static final byte[] a = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70 };
public static String encode(byte[] paramArrayOfByte)
{
return encode(paramArrayOfByte, false, 0);
}
public static String encode(byte[] paramArrayOfByte, boolean paramBoolean, int paramInt)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < paramArrayOfByte.length; i++)
{
if ((paramBoolean) && (i > 0) && (i % paramInt == 0)) {
stringBuilder.append("\r\n");
}
int j = paramArrayOfByte[i];
int k = j;
if (j < 0) {
k = j + 256;
}
j = k / 16;
stringBuilder.append((char)a[j]);
stringBuilder.append((char)a[(k % 16)]);
}
return stringBuilder.toString();
}
}
HexEncoder
? - person Vishrant   schedule 11.11.2020