🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
2 messages
2 total messages Started by danielmarcinmazur Fri, 04 May 2018 14:11
BigInteger i 256bitowe liczby
#346589
Author: danielmarcinmazur
Date: Fri, 04 May 2018 14:11
7 lines
1911 bytes
Witam wszystkich.
Panowie, mam pewien problem z generowaniem klucza publicznego w algorytmie ECDSA. Do obliczeń używam klasy BigInteger (http://rvelthuis.de/programs/bigintegers.html)

O to kod tej funkcji: http://wklej.org/hash/3edff69b460/txt/

Generowane klucze w dużej części są nieprawidłowe. Wynika to pewnie z tego, że BigInteger nie ma ograniczenia słów, czyli można tym tworzyć liczby o rozmiarze RAMu. 
Zakładam więc, że po mnożeniu punktów przez skalar dochodzi do "przepełnienia" i liczba z 256bitowej zamienia się w np. 257 bitową. Teraz pytanie, jak zasymulować prawdziwe działania na 32 bajtowym buforze?
Re: BigInteger i 256bitowe liczby
#346590
Author: danielmarcinmazur
Date: Tue, 08 May 2018 07:18
13 lines
1760 bytes
Rozwiązanie dla potomnych

function make256bit(var bi: BigInteger): BigInteger;
begin

  if bi.IsNegative then
    bi := bi + BigInteger.Parse
      ('+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F')
  else
    bi := bi mod BigInteger.Parse
      ('+0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
  result := bi;
end;
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads