у меня есть ECKey key
. Чтобы создать ECDSASignature
объект с помощью BitcoinJ, мы должны вызвать ECDSASignature mySignature = key.sign(Sha256Hash input)
.
Это Sha256Hash input
мое сообщение? Или это результат Sha256(byte[] myArray)
?
Что делать, если у меня нет сообщения для подписи? Допустимо ли подписывать key.getPrivKeyBytes()
, чтобы создать файл ECDSASignature
, или это неприемлемо, потому что он раскрывает информацию, в том числе getPrivKeyBytes()
и, в результате, раскрывает мой закрытый ключ?
И если это неприемлемо, каким должно быть мое сообщение? Могу ли я подписать все, что захочу, чтобы создать свой ECDSASignature
?
Подписание байтов закрытого ключа ECKey key
неприемлемо, поскольку вы уязвимы для раскрытия информации о вашем закрытом ключе.
В случае подписания сообщения (в виде строки) вы должны оценить:
byte[] result= sha256(message)
Результатом будет byte[] и этот массив, наконец, будет вставлен в:
Sha256Hash input= new Sha256Hash(result);
Затем процедура проста для создания ECDSASignature . Вы должны сделать следующее:
ECDSASignature signature= key.sign(input);
и, наконец, чтобы подтвердить свою подпись, вы должны проверить следующее:
key.verify(input, signature)
Ник Оделл
гтопал
амаклин
гтопал
Ник Оделл
Wallet.signTransaction(Wallet.SendRequest.forTx(transaction));
Если вы пытаетесь подписать сообщение, вы должны сначала хэшировать сообщение с помощью SHA256.