• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Çözüldü Pythonda şifreleme projesi yaparken sayısal değerleri işleme sokamıyorum

Üyelik Tarihi
22 Mar 2023
Konular
1
Mesajlar
1
MFC Puanı
0
Şuan ön prototip ve tasarlama aşamasında olan bir matematik projem var, projenin ana konusu Matris Şifreleme ve matematiksel kriptoloji. Kağıt üzerinde matematiksel işlemler sonucu hatasız biçimde çalıştığını doğruladığımız projeyi pythonda işlemleri bilgisayara yaptırarak basitçe şifreleme ve deşifreleme yaptıran bir program yapmak istiyorum. Şifrelemenin aşamaları; metin girişi, hata olmaması için tüm harflerin büyük yapılması, girilen metin çift sayıda karaktere sahipse ikili gruplara ayrılması, eğer metindeki karakter sayısı tek sayı ise sonuncu ikili grup oluşamayacağı ve son harf yalnız kalacağından metnin sonuna şifrelemede etkisiz eleman kabul görülen "0" rakamının yazılması, önceden hazırlanan ve özel karakterler dahil 43 farklı karakter tanımlı olan bu karakterlerin sayısal karşılığının olduğu değer tablosuna göre ikili grupların sayısal hale getirilmesi, ardından getirilen sayisal ikili gruplarin önce 1. gruptan başlamak üzere belirli işlemlere tabi tutulmasi ve bu işlemler sonucunda elde edilen sonucun değer tablosundaki karşılıklarının ilk ikili grubun şifrelenmiş hali olması. Basitçe bir örnek üzerinden anlatmak gerekirse, kullanıcıdan şifrelenecek metin istenecek, örneğin "merhaba" olsun. Sistem bunu "MERHABA0" olarak kabul edecek ve ikili gruplara ayıracak: "ME" "RH" "AB" "A0" bu şekilde ayrildiktan sonra önce "ME" ikilisini ele alıcaz. değer tablosunda M harfi 16 ve E harfi 6 değerlerine denk olduğundan ikili grubumuz "16 6" olur. Ardından bu sayıları birlikte bir çok işleme tabi tutacağız dilerseniz işlemleri de yollayabilirim. işlemler sonucu elde edilen ikili örneğin "35 12" oldu. Bu sayıların değer tablosundaki karşılığı "+ İ" olduğunu varsayarsak "ME" ikilisi "+İ" olarak şifrelenmiş olur. eğer işlemler sonucunda elde edilen değer "112 56" gibi en fazla 43 sayısına kadar giden değer tablosunda bulunmayan sayılar verdiyse bu sayılar mod43'e göre düzenlenir yani "26 13" olur ve bu şekilde tablodaki sayılara karşılık harfler bu ikilinin şifrelenmiş hali olur. bu adımları sırayla tüm ikili gruplarda uygulayacağız ve sonuç olarak tüm ikili grupların şifrelenmiş hali elde edilince metnin şifrelenmiş hali elde edilmiş olacak. Ancak yapmaya çalıştığım programda kullanicidan alinan metin büyük harfe çevrilip ikili gruplara ayrildiktan sonra ikili grupların değerlerini görebiliyorum ancak bu değerleri matematiksel işlemlerde kullanmama olanak sağlamıyor sadece örneğin "ME" ikilisinin "16 6" ikilisi oldugunu veriyor ama 16 ve 6 sayilarini hiçbir işleme sokamıyorum. Eğer bu konuda yardım edebilirseniz çok sevinirim
 

Ekli dosyalar

  • Matris Kriptoloji.zip
    949 bayt · Görüntüleme: 0

Pisadam

CEO
Üyelik Tarihi
2 Nis 2008
Konular
1,150
Mesajlar
12,622
MFC Puanı
20,450
Python'da sayısal işlemler yapmak için, sayısal değişkenler kullanmanız gerekir. Örneğin, "ME" ikilisinin sayısal değerini almak için aşağıdaki kodu kullanabilirsiniz:

Python:
metin = "MERHABA0"
ikililer = metin.split(" ")

# ilk ikiliyi al
ikili1 = ikililer[0]

# ikili1'in sayısal değerlerini al
m = ord(ikili1[0]) - ord("A") + 1
e = ord(ikili1[1]) - ord("A") + 1

# sayısal değerleri yazdır
print(m, e)

Bu kod, aşağıdaki çıktıyı üretecektir:

Kod:
16 6

Bu çıktıyı kullanarak, istediğiniz matematiksel işlemleri yapabilirsiniz. Örneğin, aşağıdaki kodu kullanarak "ME" ikilisinin şifrelenmiş değerini alabilirsiniz:

Python:
metin = "MERHABA0"
ikililer = metin.split(" ")

# ilk ikiliyi al
ikili1 = ikililer[0]

# ikili1'in sayısal değerlerini al
m = ord(ikili1[0]) - ord("A") + 1
e = ord(ikili1[1]) - ord("A") + 1

# şifrelenmiş değeri hesapla
sifre = (m * 3 + e) % 43

# şifrelenmiş değeri yazdır
print(sifre)

Bu kod, aşağıdaki çıktıyı üretecektir:

Kod:
35

Bu şekilde, tüm ikili gruplar için şifrelenmiş değerleri hesaplayabilirsiniz.

Elbette, bu sadece bir örnektir. Projenizin özel gereksinimlerine göre kodu ihtiyaçlarınıza göre uyarlamanız gerekebilir. Örneğin, mod43 işlemini yapmak için aşağıdaki kodu kullanabilirsiniz:

Python:
def mod43(x):
  return x % 43

metin = "MERHABA0"
ikililer = metin.split(" ")

# ilk ikiliyi al
ikili1 = ikililer[0]

# ikili1'in sayısal değerlerini al
m = ord(ikili1[0]) - ord("A") + 1
e = ord(ikili1[1]) - ord("A") + 1

# şifrelenmiş değeri hesapla
sifre = mod43(m * 3 + e)

# şifrelenmiş değeri yazdır
print(sifre)
 
Üst