ed25519 키에 대한 공개 키 일치 BEP 생성
문제:
Go crypto/ed25519 패키지 사용 , 생성된 공개 키가 BEP 데이터를 사용한 테스트 사례에서 제공된 예상 키와 다릅니다.
원인:
ed25519에는 다양한 개인 키 형식이 존재합니다. BEP 데이터는 64바이트 해시 개인 키를 사용하는 반면 Go 패키지는 32바이트 해시 개인 키(32바이트 시드가 앞에 붙음)를 사용합니다.
해결책:
BEP 개인 키를 Go 형식으로 변환하는 것은 불가능하지만 BEP에 사용되는 해시된 개인 키를 처리하기 위해 Go 라이브러리의 수정된 버전을 만들 수 있습니다.
코드 수정:
수정된 코드에는 다음 함수가 포함되어 있습니다.
<code class="go">func getPublicKey(privateKey []byte) []byte { // ... (extraction of 32-byte hash from 64-byte hashed private key and publicKey generation) ... } func sign(privateKey, publicKey, message []byte) []byte { // ... (extraction of 32-byte hash from 64-byte hashed private key and signature computation) ... }</code>
사용법:
이 수정된 코드를 사용하면 테스트 케이스를 실행할 수 있습니다. , 생성된 공개 키와 서명이 예상 BEP 데이터와 일치함을 보여줍니다.
<code class="go">// Using the modified code... fmt.Printf("Calculated key: %x\n", publicKey) fmt.Printf("Expected key: %s\n", expectedPublicKey) keyMatches := expectedPublicKey == hex.EncodeToString(publicKey) fmt.Printf("Public key matches expected: %v\n", keyMatches) // Similarly, check for signature match</code>
위 내용은 내 Go ed25519 공개 키가 예상 BEP 데이터와 다른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!