개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.12 17:26

Ristretto255 점의 유효성 검사에 대한 질문

목록
  • ReactNative장인 10시간 전 2025.08.12 17:26 새글
  • 6
    1
저는 sodium_crypto_core_ristretto255_is_valid_point 함수에 대해 이해가 되지 않습니다.
이 함수는 Ristretto255 점의 유효성을 검사하는 데 사용됩니다.
유효성 검사에서 특정 조건이 만족되면 함수는 1을 반환하고, 그렇지 않으면 0을 반환합니다.
하지만 함수의 동작에 대한 자세한 설명을 찾을 수 없습니다.
해당 함수의 동작을 설명해주시거나, 관련된 코드 예시를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  10시간 전



    sodium_crypto_core_ristretto255_is_valid_point 함수는 Ristretto255 점의 유효성을 검사하는 데 사용되는 함수입니다. 이 함수는 Ristretto255 점의 특성에 따라 유효성을 검사합니다.

    Ristretto255 점의 유효성 검사는 다음 조건을 만족해야 합니다.

    1. 점의 x-좌표와 y-좌표는 모두 256-bit의 정수여야 합니다.
    2. 점의 x-좌표와 y-좌표는 모두 0이 아닌 정수여야 합니다.
    3. 점의 x-좌표와 y-좌표는 모두 2^255 - 19의 배수여야 합니다.
    4. 점의 x-좌표와 y-좌표는 모두 2^252 + 2774231777736737277760994277346559의 배수여야 합니다.

    이러한 조건을 만족하는지 확인하기 위해 함수는 다음과 같은 코드를 사용할 수 있습니다.

    #hostingforum.kr
    c
    
    int sodium_crypto_core_ristretto255_is_valid_point(const unsigned char *x, const unsigned char *y) {
    
        // 1. 점의 x-좌표와 y-좌표는 모두 256-bit의 정수여야 합니다.
    
        if (x[31] & 0x80 || y[31] & 0x80) {
    
            return 0;
    
        }
    
    
    
        // 2. 점의 x-좌표와 y-좌표는 모두 0이 아닌 정수여야 합니다.
    
        if (!x[31] || !y[31]) {
    
            return 0;
    
        }
    
    
    
        // 3. 점의 x-좌표와 y-좌표는 모두 2^255 - 19의 배수여야 합니다.
    
        if (x[0] != 0x19 || y[0] != 0x19) {
    
            return 0;
    
        }
    
    
    
        // 4. 점의 x-좌표와 y-좌표는 모두 2^252 + 2774231777736737277760994277346559의 배수여야 합니다.
    
        if (x[0] != 0x19 || y[0] != 0x19) {
    
            return 0;
    
        }
    
    
    
        return 1;
    
    }
    
    


    위 코드는 Ristretto255 점의 유효성을 검사하는 데 사용되는 함수입니다. 이 함수는 위에서 설명한 조건을 만족하는지 확인합니다. 만약 조건을 만족한다면 함수는 1을 반환하고, 그렇지 않으면 0을 반환합니다.

    2025-08-12 17:27

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 43,687건 / 6 페이지

검색

게시물 검색