Post
Topic
Board Türkçe (Turkish)
Merits 1 from 1 user
Re: GPU ile Eliptik Eğri Aritmetiği ve Programlama Hakkında
by
John_Ahmet
on 22/12/2020, 23:23:05 UTC
⭐ Merited by Bthd (1)
Ne yapmak istediğime gelince aslında girdiğim integer ile  nokta üretmek ve kontrol etmek istiyorum.Ör : 300 olsun

Burada tam olarak ne yapıyoruz? Örneğin 300 senin public key'in ve merkeze uzaklığı tam 300 olan X ve Y koordinatlarını içeren bir point de senin private key'in mi oluyor? Peki imza nasıl doğrulanıyor.

Örneğin senin public keyin 300 olsun.
Benim ki de 500 olsun.

MP = 300
JP = 500

Örneğin A = 5 gibi bir bilgimiz olsun.

Ben sana A bilgisini şifreleyip göndermek istiyorum. Bunun için senin public key'in olan 300 ile şifrelemeliyim ki sen de sana ait 300 için X ve Y koordinatlarını içeren sahip olduğun private key ile bu bilgiyi deşifre edip gönderdiğim bilgiyi çözümleyip 5 bilgisini çözümleyip al. Sonra senin de bana B = 6 bilgisini göndermek istediğini farz edelim. Sen de bana benim public key imi kullanarak şifrele ve gönder. Bende de 500 public keyine ait X ve Y koordinatlarını içeren bir private key olması durumunda ben de bu şifreyi çözebilirim ki zaten benim public key im bu ilk olarak belirlenen bu x ve y koordinatlarını içeren private key den üretildiği için ben private keyim ile senin gönderdiğin bu 6 bilgisini gönderdiğin sayıdan oluşturabilmeliyim.


O halde Encode ve Decode işlemlerinin nasıl yapıldığını açıklayabilir misin?

C# için temel bir bir kod yazalım. Bu ECDSA keyini değil de basit bir merkeze uzaklık kodu olsun. ECDSA ile farkını anlatabilir misin? Ya da EllipticCurve bunu nasıl yapıyor?


Şimdi aşağıdaki kod simetrik mi yoksa asimetrik mi oldu? Bu basitlikte ve Point ve uzaklık yöntemiyle bu kodu asimetrik yapabilir miyiz? Zaten asimetrikse bu halde kalsın basitte olsa konuyu anlamak için örnek bir kod olabilir.

Code:
public class ECDSAKey
{
     public int X
     public int Y

     public ECDSA(int X, int Y)
    {
        this.X = X;
        this.Y = Y;
    }

     public int GetPubKey() // Merkeze olan uzaklık (bir noktanın merkeze uzaklığı)
    {
        return Math.floor(sqrt(X ^ 2 + Y ^ 2)); // Merkeze olan uzaklık için karelerinin toplamını al ve karekökünü hesaplayıp en yakın tam sayıya yuvarla...
    }
}

public class ECDSACrypto
{
    public int Encode(int message, int pubkey)
    {
        return message * pubkey;
    }

    public int Decode(int cryptedMessage, ECDSAKey key)
   {
       return cryptedMessage / Math.floor(sqrt(key.X ^ 2 + key.Y ^ 2))
   }
}