W matematyce liczba pierwsza Solinasa lub uogólniona liczba pierwsza Mersenne'a jest
liczbą
x ) {
} jest
pierwszą
fa (
,
)
\
Displaystyle
która ma postać , gdzie f (x wielomianem niskiego stopnia o małych współczynnikach całkowitych . Te liczby pierwsze umożliwiają szybkie modułowe algorytmy redukcji i są szeroko stosowane w kryptografii . Noszą one imię Hieronima Solinasa.
Ta klasa liczb obejmuje kilka innych kategorii liczb pierwszych:
Liczby pierwsze Mersenne'a , które mają postać
2
k
- 1
{\ Displaystyle 2 ^ {k} -1}
,
}
Liczby pierwsze
.
Crandalla lub
\
pseudo -Mersenne'a, które mają postać dla małych nieparzystych
do {
displaystyle c
Modułowy algorytm redukcji
Niech
fa ( t ) =
t
re
-
do
re - 1
t
re - 1
- . . . -
do
0
{\ Displaystyle f (t) = t ^ {d} -c_ {d-1} t ^ {d-1} -... - c_ {0}} być wielomianem monicznym stopnia
re { \
Displaystyle
d }
ze współczynnikami w
i
załóżmy,
że
p = fa (
2
m
)
{\ Displaystyle p = f (2 ^ {m})}
jest liczbą pierwszą Solinasa. Biorąc pod uwagę liczbę
,
do
{
m
chcemy
2
re
p
{\ displaystyle 2md}
bitów
}
znaleźć liczbę zgodną z
n
\ displaystyle n}
mod {\ displaystyle
p
-
tylko z taką liczbą bitów, jak
najwyżej bitami
to
znaczy z co .
Najpierw reprezentuj w bazie
n
\
displaystyle n}
{
\ displaystyle n} : n {
:
n =
∑
jot =
0
2 re - 1
ZA
jot
2
m jot
{\ Displaystyle n = \ suma _ {j = 0} ^ {2d-1} A_ {j} 2 ^ {mj}}
Następnie wygeneruj macierz przez krok
re
{\ displaystyle d}
-by-
re {
displaystyle d}
\
}
X = (
X
ja , jot
) {\
X = (X_ {i, j})
Displaystyle razy rejestr przesuwny
:
z
liniowym sprzężeniem zwrotnym przez wielomian zaczynając od rejestru liczb całkowitych
[ re
d}
{ \
displaystyle
zdefiniowany
0
0
0
|
|
. . .
|
|
1 ]
{\ Displaystyle [0|0|...|0|1]}
, przesuń w prawo o jedną pozycję, wstrzykując
0
{\ Displaystyle 0}
po lewej stronie i dodając (pod względem składowym) wartość wyjściową razy wektor
[
do
0
, . . . ,
do
re - 1
]
{\ Displaystyle [c_ {0}, ..., c_ {d-1}]}
na każdym kroku (szczegóły w [1]). niech
X
ja , jot
{\ Displaystyle X_ {i, j}}
(
zauważ
0
,
,
) =
będzie
do
0
, . . . do
re
- 1
d
] {\ Displaystyle (X_ {0, j}) = [c_ {0}, ..., c_ {
-1}]}
liczbą całkowitą w
rejestrze
th
na kroku th i że pierwszy wiersz
[
jest
określony przez
X
jot
. Wtedy jeśli oznaczymy przez
B = (
B
i
)
{\ Displaystyle B = (B_ {i})}
wektor liczb całkowitych określony wzorem:
... {
(
b
0
. .
b
re - 1
) = (
ZA
0
. .
ZA
re - 1
) + (
ZA
re
... ZA
2
B_
re -
d-
1 ) X
{\ Displaystyle (B_ {0} 1})=(A_{0}...A_{d-1})+(A_{d}...A_{2d-1})X}
,
można łatwo sprawdzić, że:
∑
jot =
0
re - 1
b
jot
2
m jot
≡
∑
jot =
0
2 re - 1
ZA
jot
2
m jot
mod p
{\ Displaystyle \ suma _ {j = 0} ^ {d-1} B_ {j} 2 ^ { mj}\equiv \suma _{j=0}^{2d-1}A_{j}2^{mj}\mod p}
.
Zatem reprezentuje -bitową liczbę całkowitą przystającą do
n
displaystyle md
m re
}
{
\
.
rozsądnych
}
wyborów (ponownie, patrz [1]), algorytm ten obejmuje tylko stosunkowo niewielką liczbę dodawania i odejmowania (i żadnych podziałów!), Więc może być znacznie bardziej wydajny niż naiwna redukcja modułowa fa {\ displaystyle f algorytm (
n - p ⋅ ( n
/
p )
{\ Displaystyle np \ cdot (n/p)}
).
Przykłady
Cztery z zalecanych liczb pierwszych w dokumencie NIST „Zalecane krzywe eliptyczne do użytku rządu federalnego” to liczby pierwsze Solinasa:
p-192
2
192
-
2
64
- 1
{\ Displaystyle 2 ^ {192} -2 ^ {64} -1}
p-224
2
224
-
2
96
+ 1
{\ Displaystyle 2 ^ {224} -2 ^ {96} + 1}
p-256
2
256
-
2
224
+
2
192
+
2
96
- 1
{\ Displaystyle 2 ^ {256} -2 ^ {224} + 2 ^ {192} + 2 ^ {96} -1}
p-384
2
384
-
2
128
-
2
96
+
2
32
- 1
{\ Displaystyle 2 ^ {384} -2 ^ {128} -2 ^ {96} + 2 ^ {32} -1}
Curve448 wykorzystuje liczbę pierwszą Solinasa
2
448
-
2
224
- 1.
{\ Displaystyle 2 ^ {448} -2 ^ {224} -1.}
Zobacz też
Według formuły
Według sekwencji liczb całkowitych
Według właściwości
Zależne od bazy
Wzory
Bliźniak ( p , p + 2 )
Łańcuch podwójny ( n ± 1, 2 n ± 1, 4 n ± 1, … )
Trójka ( p , p + 2 lub p + 4, p + 6 )
Kwadruplet ( p , p + 2 , p + 6 , p + 8 )
k -krotka
kuzyn ( p , p + 4 )
Seksowne ( p , p + 6 )
Chen
Sophie Germain/Safe ( p , 2 p + 1 )
Cunningham ( p , 2 p ± 1, 4 p ± 3, 8 p ± 7, ... )
Postęp arytmetyczny ( p + a·n , n = 0, 1, 2, 3, ... )
Zrównoważony ( kolejne p - n , p , p + n )
Według rozmiaru
Liczby zespolone
Liczby złożone
powiązane tematy
Pierwsze 60 liczb pierwszych