Her çözüm çözümdür.
Nereye takıldığımı anlamanızı bekliyorum…
Python Split String into Specific Length Chunks - Python Examples
Yazar geçerdim.
Ama özellikle belli adımları yakalamanı istiyorum.
Bu açtığın başlıklardan bir kaçına bakarsak,
Bir kripto algoritması üzerinde çalışıyorsun.
Kripto algoritması için hakim olmanı istediğim hususlar var.
Yoksa dediğim gibi direkt üstteki linki yapıştırırdım, diğer katılımcıların düştüğü gibi binary çevirme konusuna yeniden gelmen gerekirdi.
Bu nedenle işlemlerini binary olarak yürütmeni tavsiye ediyorum.
Karakter dizisini aldıktan sonra tüm işlemlerini hep binary yürüt.
len() ile çalışırken binary üzerinde çalış.
Yada kendi nesnelerini uzunlukarını takip edebil diye ilk mesajdaki linkleri verdim.
Bu sayede şu noktalara bakmanı sağlayacaktım…
Ve nacizene bir kaç tavsiyem olacaktı.
Mesela bölme operatörü (/), modül operatörü (%)
gibi.
Ardından şunu söylemeyi düşünüyordum…
Mümkün olduğunca hazır kütüphaneleri kullan, iki nedenle, birincisi belirli kurallara göre yazıldıkları için kullanımı kolaydır, ikincisi esnek ve hızlı çalışmaları için optimize edilmişlerdir.
Özellikle bir de örnek verecektim.
NumPy Splitting Array (w3schools.com)
np.array_split () ile zaten dizilerini, iki boyutlu dahil rahatlıkla parçalara bölebilirsin.
divmod(len(arr), 64) olarak bakıp.
bolen+kalan toplamına bolerek hızlıca dizilerini bölünmüş hale getirebilirsin.
döngü falan da gerektirmez.
arrdivide = np.array_split (arr, bolum+1 (kalan varsa))
Gibi bir satırda böler geçersin.
arrdivide[0] da birinci dizi,
arrdivide[1] de ikinci dizin şeklinde gider.
Bunlar liste bölme kısmı.
Ama bit bazında çalışırsan daha hızlı olacaktı.
Sonrasında aslında bu işlerin böyle yapılmadığı,
<< ve >> operatörleriyle 64 bit kaydırarak rahatlıkla yapılabileceğini gösterecektim.
Genelde kriptolojide bit kaydırarak verileri almak ve daha önce bildiğim üzere bu kodu, 64 bitten uzun verileri kırpıp xorlamak için kullanacağını bildiğim için bu konuda örnekler vermek istiyordum.
Orada da çekincelerim var aslında.
Xor yetersiz gibi, bir de 64 bite kırpıp xorlarsan farklı uzunluktaki anahtarlar aynı anahtara dönüşebilir ve bu bir zaafiyete neden olabilir.
Bunların alt yapısını oluşturmak adına ön bilgi oluşturmadan tam kod vermiyorum özellikle.
Tabi yazdıklarımın ne kadarını anlatabildim bilmiyorum.
Buradan özetle.
-
Bit düzeyinde çalış.
-
Dizi bölmek için kütüphane kullan.
-
Kütüğhane kullanmayacaksan en azından bit düzeyinde shift operatörleri ile veriyi kaydırarak kullan.
-
Son olarak en önemlisi elde ettiğin dizileri xorlamak yerine biraz daha düşünelim ve anahtarları kısaltmak için daha makul bir çözüm araştıralım.