AKADEMİK BÜLTEN
  • Anasayfa
  • Blog
    • Linux
    • Haber
    • Adli Bilişim
    • Eğitim
    • Bilim
    • Siber Güvenlik
    • Teknoloji
    • Yazılım
  • Röportajlar
  • Bilgi Ve İletişim
26/02/2020 aebulten tarafından

Shor Algoritması

Shor Algoritması
26/02/2020 aebulten tarafından

Peter Shor 1994 yılında kuantum bilgisayarlarla çift asal sayıların çarpanlarının hesaplanmasına imkân veren bir algoritma geliştirdi. Bu algoritma özetle şu şekilde işler:

  1. Asal çarpanlarını bulmak istediğiniz n sayısından küçük bir x tam sayısı alın
  2. M bir tam sayı olmak üzere xp=mn+1 (ya da xp=1 mod n) eşitliğini sağlayan p sayısını bir kuantum bilgisayarı yardımıyla bulun
  3. Bu eşitlik çözüldüğünde (xp/2-1)(xp/2+1)=mn olduğu görülür. Dolayısıyla xp/2-1 ve xp/2+1 sayıları n sayısıyla ortak çarpanlara sahip olabilir.

Bu algoritma her durumda n sayısının çarpanlarından birini vermez. Çünkü hesaplanan xp/2-1 ve xp/2+1 sayıları tamsayı olmayabilir ya da bu sayılardan biri aradığımız n sayısının tam katı olabilir. Böyle bir durumla karşılaşıldığında farklı bir x sayısı seçilerek hesap yeniden yapılır. Ta ki n sayısının çarpanlarından biri bulununcaya kadar.

Bu algoritmayı klasik bilgisayarlarla da uygulamak mümkündür. Örneğin 15 sayısının çarpanlarını bulmaya çalıştığımızı ve seçtiğimiz rastgele x sayısının 2 olduğunu düşünelim. P sayısını bulmak için x=2’nin tam kuvvetlerini birinci kuvvetinden başlayarak sırayla hesaplar ve xp=mn+k biçiminde yazarız.

15 Sayısının çarpanlarını 24/2-1=3 ve 24/2+1=5 olarak hesaplandığında, her iki sayı da doğrudur. Bu algoritmayı klasik bilgisayarla uygulamaktaki ana sorun p sayısını bulmanın çok uzun zaman almasıdır.

Kuantum bilgisayarlarının sağladığı avantaj, süperpozisyon durumları üzerinde yapılan işlemlerle tek bir seferde olmasa bile sadece birkaç denemede p sayısını bulmaya imkân vermleri. Bunu nasıl gerçekleştiğini anlamak için önce modüler aritmetikle ilgili bir bilgiye daha ihtiyacımız var: Eğer xp=1 mod n ve xq=k mod n ise xp+q=k mod n dir. Dolayısıyla p sayısını bulmanın bir başka yolu x sayısının kuvvetlerinin mod n’deki değerlerinde herhangi bir k sayısının hangi sıklıkla ortaya çıktığını tespit etmektir. Bir kuantum bilgisayarıyla aynı sonuçları hangi sıklıkla tekrar ettiğini bulmak için önce kübitlerin durumu muhtemel tüm kuvvet değerlerinin (q) bir süperpozisyonuna getirilir. Daha sonra xq=k mod n hesabı yapılır. İşlemden sora kübitler muhtemel tüm sonuçların (k) bir süper pozisyonunda olacaktır. Son olarak aynı sonuçların hangi sıklıkla ortaya çıktığını tespit etmek için kübtlere “Fourier dönüşümü” denilen bir işlem uygulanır ve üzerlerinde ölçüm yapılır. Eğer işlemlerde kullanılan x değeri arzu edilen sonucu vermezse, başka bir x değeri ile hesaplar tekrar edilir.

Kısacası kuantum bilgisayarların bu problemi kolayca çözebilmesinin nedeni, klasik bilgisayarların aksine, x sayısının kuvvetlerini tek tek sırayla değil hepsini birden tek seferde hesaplayabilmeleridir.

Shor Algoritması için Örnek Kod [Python]

Büyük tamsayıları çarpanlarına ayırmak için yazılmış bir program.

https://github.com/lialkaas/qiskit-shors

import random
import sys
from assets import FactorClass

# Global variables
order = 3
limit = 10 ** order  # upper limit of the integer to be factored
sample_size = 10  # num of integers in a sample for finding a period
recursion_limit = 1000  # sys default set to 1000
seed = 3


def main():
    n = random.randint(10 ** (order - 1), limit)
    randint_set = FactorClass.sample(n, sample_size)
    p = FactorClass.euclidean(n, randint_set)
    try:
        if p is not None:
            q = int(n / p)
        else:
            print("-> Euclidean algorithm failed")
            p = FactorClass.modexp(n, randint_set)
            if p is not None:
                q = int(n / p)
            else:
                p, q = 1, n
                print("-> Classical Modexp failed")
    except OverflowError as message:
        q = 'q'
        print('Unable to find second factor q = n / p, because', message)
        if p is None:
            p = 'p'

    print("{} x {} = {}".format(p, q, n))


if __name__ == '__main__':
    print()
    sys.setrecursionlimit(recursion_limit)
    for i in range(seed):
        main()

bkz:https://akademikbulten.com/2020/02/kuantum-bilgisayarlar-caginda-kriptografi/

  • About
  • Latest Posts
aebulten
Latest posts by aebulten (see all)
  • NMAP ile İnternetin Ufak Bir Kısmını Taramak - 01/05/2020
  • Adli Bilişim Mühendisliği Hakkında - 18/04/2020
  • Zeroday Nedir? - 12/04/2020
Önceki makaleAkıllı Arabaların Siber GüvenliğiSonraki makale Kuantum Bilgisayarlar Çağında Kriptografi

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Son Yorumlar

  • Hacker Kime Denir? / Kim Bu Hackerler? için Cookie Nedir? Cookie tehlikeli midir? Eski cookieler nasıl temizlenir?
  • Hash Fonksiyonu Zaafiyetleri’nin Sebebi: Hash Collision nedir? için Simetrik ve Asimetrik Şifreleme Arasındaki Farklar | Akademik Bülten
  • OWASP Mobil Top 10 için Mobil Güvenlik Nasıl Sağlanır Ve Sızma Teknikleri Nelerdir?
  • Coronavirüs Hakkında Bilgiler ve Bilinen Yanlışlar için Recep Hilmi TUFAN
  • 2020’nin En İyi Antivirüs Programları için DDoS Saldırısı Nedir? DDos Saldırısının Türleri Nelerdir?

Son Yazılar

Cookie(Çerez) Nedir?27/12/2020
VPN Hesaplarınızın Güvenliği Tehlikede,Uzmanlar uyarıyor25/12/2020
SQL INJECTION NEDİR?20/12/2020
Penguen’in Yolculuğu| Uzay Yolculuğuna Çıkalım|Bölüm 218/12/2020
Penguen’in Yolculuğu |Linux’un Atası UNIX |Bölüm 117/12/2020

Arşivler

  • Aralık 2020
  • Kasım 2020
  • Ekim 2020
  • Eylül 2020
  • Ağustos 2020
  • Temmuz 2020
  • Haziran 2020
  • Mayıs 2020
  • Nisan 2020
  • Mart 2020
  • Şubat 2020

Alakalı Yazılar

Cookie(Çerez) Nedir?27/12/2020
VPN Hesaplarınızın Güvenliği Tehlikede,Uzmanlar uyarıyor25/12/2020
SQL INJECTION NEDİR?20/12/2020
Penguen’in Yolculuğu| Uzay Yolculuğuna Çıkalım|Bölüm 218/12/2020
Penguen’in Yolculuğu |Linux’un Atası UNIX |Bölüm 117/12/2020
Epic Games’in 15 gün boyunca vereceği ücretsiz oyunlar sızdırıldı!16/12/2020
Penguen’in Çekirdeği15/12/2020
Mobil Güvenlik Ve Sızma Teknikleri Nelerdir?15/12/2020
DDoS Saldırısı Nedir?11/12/2020
Pandemi Döneminde Uzaktan Çalışanlar Dikkat!08/12/2020

Takvim

Şubat 2021
P S Ç P C C P
1234567
891011121314
15161718192021
22232425262728
« Ara    

Arşivler

  • Aralık 2020
  • Kasım 2020
  • Ekim 2020
  • Eylül 2020
  • Ağustos 2020
  • Temmuz 2020
  • Haziran 2020
  • Mayıs 2020
  • Nisan 2020
  • Mart 2020
  • Şubat 2020

Son Yazılar

Cookie(Çerez) Nedir?27/12/2020
VPN Hesaplarınızın Güvenliği Tehlikede,Uzmanlar uyarıyor25/12/2020
SQL INJECTION NEDİR?20/12/2020
Penguen’in Yolculuğu| Uzay Yolculuğuna Çıkalım|Bölüm 218/12/2020
Penguen’in Yolculuğu |Linux’un Atası UNIX |Bölüm 117/12/2020
Epic Games’in 15 gün boyunca vereceği ücretsiz oyunlar sızdırıldı!16/12/2020
Penguen’in Çekirdeği15/12/2020
Mobil Güvenlik Ve Sızma Teknikleri Nelerdir?15/12/2020
DDoS Saldırısı Nedir?11/12/2020
Pandemi Döneminde Uzaktan Çalışanlar Dikkat!08/12/2020

Arama

Go to mobile version