Python kullanarak RSA Algoritmasını uygulama
Bu makale, kriptografide RSA algoritmasının gerçekte ne olduğunu açıklar ve Python kullanarak verilerin şifrelenmesi ve şifresinin çözülmesi için RSA algoritmasının nasıl uygulanacağını gösterir. Burada veriler sayıları ifade eder. Bu algoritmayı kullanarak şifreleme ve şifre çözme için dize verilerini de kullanabilirsiniz.
RSA algoritması, mesajları şifrelemek ve şifrelerini çözmek için yaygın olarak kullanılan bir yöntemdir. Adını, onu 1977'de geliştiren yaratıcıları Ron Rivest , Adi Shamir ve Leonard Adleman'dan almıştır . RSA algoritması, büyük sayıları çarpanlara ayırmanın zorluğuna dayanır ve yaygın olarak verileri şifrelemek için güvenli bir yöntem olarak kabul edilir.
RSA algoritmasının nasıl çalıştığını anlamak için öncelikle genel ve özel anahtar kavramını anlamamız gerekir. RSA algoritmasında, her kullanıcının bir çift anahtarı vardır: bir genel anahtar ve bir özel anahtar. Açık anahtar, kullanıcıya mesaj göndermek isteyen herkese açık hale getirilir ve mesajı şifrelemek için kullanılır. Özel anahtar gizli tutulur ve mesajın şifresini çözmek için kullanılır.
İşte RSA algoritmasının nasıl çalıştığına dair bir örnek:
- Diyelim ki Gwen, Peter'a bir mesaj göndermek istiyor. Peter'ın genel anahtarına bakar ve onu mesajı şifrelemek için kullanır.
- Şifreli mesaj Peter'a gönderilir.
- Peter, mesajın şifresini çözmek ve okumak için özel anahtarını kullanır.
Daha ayrıntılı olarak nasıl çalıştığı aşağıda açıklanmıştır:
- İlk olarak, Gwen ve Peter iki büyük asal sayı olan p ve q üzerinde anlaşırlar.
- Bu asal sayıları, p ve q'nun çarpımı olan üçüncü bir sayı olan n'yi hesaplamak için kullanırlar. Bu numara herkese açık.
- Ayrıca, "totient" olarak bilinen, n'den küçük ve n'ye eş asal olan pozitif tamsayıların sayısı olan dördüncü bir sayıyı da hesaplarlar. Bu numara da kamuoyuna duyurulur.
- Gwen ve Peter, "özel anahtar" olarak bilinen gizli bir anahtar oluşturur. Bu anahtar, totient'ten küçük ve totient ile aralarında asal olan bir sayıdır.
- Daha sonra hasta için nispeten asal olan bir sayı olan genel anahtarlarını hesaplamak için kendi özel anahtarlarını kullanırlar. Bu ortak anahtar, kullanıcıya mesaj göndermek isteyen herkesin kullanımına sunulur.
RSA algoritmasının çeşitli avantajları vardır. Uygulaması nispeten basittir ve verileri şifrelemek için güvenli bir yöntem olduğu düşünüldüğünden yaygın olarak kullanılır. Ek olarak, RSA algoritması bir "ortak anahtar" algoritmasıdır, yani şifreleme ve şifre çözme için kullanılan anahtarlar farklıdır. Bu, kullanıcıların gizli anahtarları değiş tokuş etmek zorunda kalmadan iletişim kurmasını mümkün kılar.
Özetle, RSA algoritması, mesajları şifrelemek ve şifresini çözmek için yaygın olarak kullanılan bir yöntemdir. Büyük sayıları çarpanlara ayırmanın zorluğuna dayanır ve verileri şifrelemek için güvenli bir yöntem olarak kabul edilir. Basitliği ve genel ve özel anahtarların kullanımı dahil olmak üzere birçok avantajı vardır.
Basit kelimelerle tüm RSA algoritması,
- p , q'yu seçin ( p ve q'nun ikisi de asaldır ve p , q'ya eşit değildir )
- Hesapla n = p * q
- Totient'i hesapla, t = (p -1) * (q — 1)
- gcd(t, e) = 1'i kullanarak e'yi seçin , burada 1 < e < t
- (d * e % t = 1) kullanarak d' yi hesaplayın
- e'yi Genel Anahtar ve d'yi Özel Anahtar olarak kabul edin.
- Şifreleme için Şifreli Metin = (Mesaj ^ e) % n (burada, Mesaj < n)
- Şifre çözme için Mesaj = (Şifreli Metin ^ d) % n
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
Faydalı bulduysanız arkadaşlarınızla paylaşmayı ve takip etmeyi unutmayın.
Başka bir blogda görüşmek üzere, hoşçakalın

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































