Hacking RSA Cipher
L'hacking del codice RSA è possibile con numeri primi piccoli, ma è considerato impossibile se viene utilizzato con numeri grandi. I motivi che specificano perché è difficile hackerare il codice RSA sono i seguenti:
L'attacco di forza bruta non funzionerebbe perché ci sono troppe chiavi possibili su cui lavorare. Inoltre, questo richiede molto tempo.
L'attacco del dizionario non funzionerà nell'algoritmo RSA poiché le chiavi sono numeriche e non includono alcun carattere.
L'analisi della frequenza dei caratteri è molto difficile da seguire poiché un singolo blocco crittografato rappresenta vari caratteri.
Non ci sono trucchi matematici specifici per hackerare il codice RSA.
L'equazione di decrittografia RSA è:
M = C^d mod n
Con l'aiuto di piccoli numeri primi, possiamo provare a hackerare il codice RSA e il codice di esempio per lo stesso è menzionato di seguito:
def p_and_q(n):
data = []
for i in range(2, n):
if n % i == 0:
data.append(i)
return tuple(data)
def euler(p, q):
return (p - 1) * (q - 1)
def private_index(e, euler_v):
for i in range(2, euler_v):
if i * e % euler_v == 1:
return i
def decipher(d, n, c):
return c ** d % n
def main():
e = int(input("input e: "))
n = int(input("input n: "))
c = int(input("input c: "))
# t = 123
# private key = (103, 143)
p_and_q_v = p_and_q(n)
# print("[p_and_q]: ", p_and_q_v)
euler_v = euler(p_and_q_v[0], p_and_q_v[1])
# print("[euler]: ", euler_v)
d = private_index(e, euler_v)
plain = decipher(d, n, c)
print("plain: ", plain)
if __name__ == "__main__":
main()
Produzione
Il codice precedente produce il seguente output: