Hacking RSA Cipher
Có thể hack mật mã RSA với các số nguyên tố nhỏ, nhưng nó được coi là không thể nếu nó được sử dụng với các số lớn. Các lý do nêu rõ tại sao khó hack mật mã RSA như sau:
Tấn công bằng vũ lực sẽ không hoạt động vì có quá nhiều phím có thể hoạt động. Ngoài ra, điều này tiêu tốn rất nhiều thời gian.
Tấn công từ điển sẽ không hoạt động trong thuật toán RSA vì các khóa là số và không bao gồm bất kỳ ký tự nào trong đó.
Phân tích tần số của các ký tự là rất khó theo dõi vì một khối được mã hóa đơn lẻ đại diện cho các ký tự khác nhau.
Không có thủ thuật toán học cụ thể nào để hack mật mã RSA.
Phương trình giải mã RSA là -
M = C^d mod n
Với sự trợ giúp của các số nguyên tố nhỏ, chúng tôi có thể thử hack mật mã RSA và mã mẫu cho mã tương tự được đề cập bên dưới:
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()
Đầu ra
Đoạn mã trên tạo ra kết quả sau: