>백엔드 개발 >Golang >golang.org/x/crypto/ed25519가 BitTorrent BEP-0044 테스트 데이터에 대해 예기치 않은 공개 키를 반환하는 이유는 무엇입니까?

golang.org/x/crypto/ed25519가 BitTorrent BEP-0044 테스트 데이터에 대해 예기치 않은 공개 키를 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 17:56:38322검색

Why Does golang.org/x/crypto/ed25519 Return Unexpected Public Keys for BitTorrent BEP-0044 Test Data?

ed25519.공개 결과 불일치

문제 설명

Golang 패키지 golang.org/x/crypto/ed25519를 사용하여 주어진 개인 키에 해당하는 공개 키는 예상과 다른 결과를 생성합니다. 특히, 라이브러리는 개인 확인 키(PVK)의 마지막 32바이트를 반환하지만, 제공된 테스트 데이터에서는 이것이 올바르지 않음을 나타냅니다.

설명

불일치는 키에 사용되는 다양한 형식으로 인해 발생합니다. ed25519 개인 키. Golang 구현은 개인 키를 32바이트 공개 키와 32바이트 시드의 연결로 정의하는 RFC 8032 규칙을 따릅니다.

그러나 BitTorrent BEP-0044 테스트에서 제공되는 개인 키는 데이터는 시드의 SHA512 해시의 64바이트 결과이며 이러한 형식은 해싱 함수의 단방향 특성으로 인해 직접 변환될 수 없습니다.

해결책

주어진 테스트 데이터가 있는 Golang 라이브러리, 해시된 개인 키 형식에서 공개 키 및 서명의 사용자 정의 생성을 허용하는 수정된 버전의 라이브러리가 필요합니다. 이는 라이브러리에서 관련 코드를 복사하고 다른 형식을 수용하도록 구현을 수정하여 달성할 수 있습니다.

수정된 코드에는 다음이 포함됩니다.

  • getPublicKey: 해시된 데이터에서 공개 키를 생성합니다. 개인 키(시드).
  • sign: 해시된 개인 키, 공개 키, 메시지를 기반으로 서명을 계산합니다.

이러한 수정된 함수를 사용하면 공개 키와 서명을 포함하는 예상 테스트 벡터입니다.

위 내용은 golang.org/x/crypto/ed25519가 BitTorrent BEP-0044 테스트 데이터에 대해 예기치 않은 공개 키를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.