Почему LIB Java X22519 работает с некоторыми входами, но не с другимиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему LIB Java X22519 работает с некоторыми входами, но не с другими

Сообщение Anonymous »

Я использую встроенный поставщик безопасности Java Sunec 21 для выполнения тестовых случаев X25519 и всех работ, кроме одного.

Я использую одну и ту же логику для каждого теста, просто разные входы.

Код: Выделить всё

Public key: e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493< /code>

Private key: 4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0d


Ожидаемый вывод:

95CBDE9476E8907D7AADE45CB4B873F88B595A68799FA152E6F87. /> < /blockquote>
вместо этого я получаю: < /p>

d5f33573c9f6b8129483acce1e2534e95d3c41af6b00d0d30437b87cada57e4a < /p>
/> (это тестовый случай два в RFC 7748.) < /p>
Я не знаю, почему это так. Всякий раз, когда я пробую это с первым или третьим входом в RFC 7748, он работает нормально. (Опять же, та же логика просто разные входы.) < /P>
byte[] publicKey;
publicKey = Hex.decode("e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493");

byte[] privateKey;// input scalar
privateKey = Hex.decode("4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0d");
// System.out.println("bc go crazy:" + Hex.toHexString(privateKey));

NamedParameterSpec paramSpec = new NamedParameterSpec("X25519");

BigInteger clientBigInteger = new BigInteger(1, Util.reverse(publicKey));

KeyFactory kf = KeyFactory.getInstance("X25519");
XECPublicKeySpec clientPublicKeySpec = new XECPublicKeySpec(paramSpec, clientBigInteger);

XECPublicKey clientPublicKey;

clientPublicKey = (XECPublicKey) kf.generatePublic(clientPublicKeySpec);

XECPrivateKeySpec privateKeySpec = new XECPrivateKeySpec(paramSpec, privateKey);

XECPrivateKey secretKey = (XECPrivateKey) kf.generatePrivate(privateKeySpec);

KeyAgreement ka = KeyAgreement.getInstance("X25519");

ka.init(secretKey);
ka.doPhase(clientPublicKey, true);
byte[] sharedSecret = ka.generateSecret();

System.err.println("---------- X25519 test cases ----------");

System.out.println("X25519-test-case-2-out:" + Hex.toHexString(sharedSecret));
System.out.println(
"X25519-test-case-2-exp:95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957");
< /code>
Это код, который не дает правильного вывода. Я проверял тестовые векторы десять раз и копировал вставленную логику двадцать. Что не так с моим кодом? Почему это работает для некоторых тестовых векторов, но не для других?
на основе RFC 7748.

Подробнее здесь: https://stackoverflow.com/questions/797 ... not-others
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»