Explícame cómo funciona el algoritmo RSA
donde p y q son dos números primos diferentes, y r es primo relativo con (p-1)(q-1)
p, q, r son claves privadas
A continuación, encuentre m tal que rm == 1 mod (p-1)(q-1)
Esta m debe existir, porque r y (p-1)(q-1) son primos relativos. Esta m debe existir porque r es primo relativo con (p-1)(q-1) y se puede obtener por división conmutativa
Luego, calcula n = pq
m, n , estos dos números son la clave pública
El proceso de codificación es, si los datos son a, trátelos como un número entero grande y suponga que a <p> Si a > = n, entonces a representa el posicionamiento de s, luego a representa el posicionamiento de s y n representa el posicionamiento de s.
Luego, alimente s a (s <= n, generalmente s = 2^t),
de manera que cada bit sea menor que n, y codifíquelo segmentariamente
A continuación, calcule b == a^m mod n, (0 <= b < n),
b son los datos codificados
Al decodificar, calcule c == b^r mod pq (0 <= 0 <= b De esta forma se completa la decodificación. Más adelante demostraremos que c y a son realmente iguales :) Si un tercero está escuchando, obtendrá varios números: m, n(=pq), b Si quiere decodificarlo, tiene que encontrar una manera de obtener r. La forma más efectiva de evitar que factorice es encontrar dos números primos muy grandes p y q, Esto hará que a un tercero le resulte difícil factorizar <Teorema> Si p y q son números primos diferentes, rm == 1 mod (p-1)(q-1), a es cualquier número positivo Enteros, b == a^m mod pq, c == a^m mod pq, b == a^m mod pq. m mod pq, c == b^r mod pq, Entonces c == a mod pq La demostración usando el pequeño teorema de Fermat es la siguiente: m es cualquier número primo y n es cualquier número entero, entonces n^m == n mod m (En otras palabras, si n y m son mutuamente primos, entonces n^(m-1) = = 1 mod m) (Si n y m son mutuamente primos, entonces n^(m-1) == 1 mod m. ) Esto es lo mismo que n^(m-1).mod m) Usando algunos conocimientos básicos de teoría de grupos, podemos probar fácilmente el pequeño teorema de Fermat Porque rm == 1 mod (p-1)(q-1), entonces rm = k(p-1)(q-1) + 1, donde k es un entero porque es una multiplicación que se conserva en módulo (x == y mod z and u == v mod z => xu == yv mod z), Entonces, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq 1. Si a no es múltiplo de p o q, entonces rm = k(p-1)(q-1)+1) mod pq 1. no es un múltiplo de p o q, entonces a^(p-1) == 1 mod p (Pequeño Teorema de Fermat) => a^(k(p-1 )(q-1)) == 1 mod p a^(q-1) == 1 mod q (Pequeño teorema de Fermat) => mod q Entonces p, q puede ser divisible por a^(k(p-1)(q-1)) - 1 => pq a^(k (p-1)(q- 1)) - 1 es decir, a^(k(p-1)(q-1)) == 1 mod pq => c == a^(k( p-1)(q-1)+1) == a mod pq 2 Si a es múltiplo de p pero no múltiplo de q, Entonces a^. (q-1) == 1 mod q (Pequeño Teorema de Fermat) => a^(k(p-1)(q-1)) == 1 mod q =>c == a^(k(p-1)(q-1)+1) == a mod q => > Porque p | a => c == a^(k(p-1)(q-1)+1) == 0 mod p p> => p | c - a Entonces pq | c - a => c == a mod pq 3. Si a es múltiplo de q en lugar de A múltiplo de p, la prueba es. como arriba Si a es un múltiplo de q pero no un múltiplo de p, la prueba es la misma que la anterior 4. , Entonces pq | a => c == a^(k(p-1)(q-1)+1) == 0 mod pq => pq | c - a => c == a mod pq Q.E ..D. El teorema establece que cuando a se codifica como by se decodifica en c, a == c mod n (n = pq) Pero cuando codificamos y decodificamos, restringimos 0 <= a < n, 0 <= c < , Entonces esto significa que a es igual a c, por lo que el proceso codifica y decodifica Esto significa que a es igual a c, por lo que el proceso codifica y decodifica p>