Yaptığınız şey "şifreleme" değildir; "karma". İkisi arasındaki başlıca farklılık şifreleme olmasıdır olan karma ilk orijinal ileti bilerek dışında herhangi bir koşul olarak geri alınması çok zor olduğu tasarlanmış olsa da, (tabii ki, doğru anahtar ile) kolaylıkla geri çevrilebilir.
Teoride, karmalar "rastgele bir kehanet", bir eidetik hafızalı varsayımsal bir homunculus ve üst sınır sınırı olmayan mükemmel benzersiz, mükemmel rastgele sayılar üretmenin bir yolunu simüle eder. Bu küçük adama bir mesaj verirsiniz ve iki şeyden biri olur; ya daha önce hiç mesaj görmemişti, bu durumda yeni bir rastgele sayı üretir ve bunu size özet olarak verir ya da o mesajı daha önce görmüş ve böylece onu gördüğünde ürettiği sayıyı hatırlar ve verir. İlk kez. Bu teorik modelde, bir mesaj ile özeti arasında sıfır bir ilişki vardır ve RNG'den iki kez hiçbir tek sayı gelmeyecekse, bir çarpışma olasılığı yoktur.
Ne yazık ki, ideal bir rastgele kehanetimiz yok; bu fikrin, kehanetin herhangi bir yerde herhangi bir kişinin verdiği her mesajı verimli bir şekilde depolama ve verimli bir şekilde hatırlama yeteneği ve müşterilerin yüzlerce veya binlerce ondalık basamak olabilen bir sayıyı kabul etme yeteneği gibi dijital bir uygulama için pratik imkansızlıkları vardır. uzunluğunda. Bunun yerine, görünürde belirleyici olmayan bir dönüşüm (aynı mesaj => aynı karma) oluşturmak için iletinin kendisi üzerinde çalışan geri döndürülemez (tek yönlü) matematiksel işlemler olan karma işlevlerimiz vardır.karma ve orijinal mesaj arasındaki ilişki. Yorumlarda belirtildiği gibi, mesajda sistematik değişiklikler yapılarak üretilen karma değerinde öngörülebilir bir değişiklik olmamalıdır; ideal olarak, mesajın tek bir bitinde bir değişiklik verildiğinde, sindirimin her bir bitinin değiştirme şansı% 50 olacaktır.
Karma işlevinin birçok kullanımı vardır; her iki tarafın da düz metin sırrını bilmesine gerek kalmadan, meydan doğrulama için kullanılır (şifreler gibi giriş kimlik bilgilerini düşünün) ve bir iletinin tahrif edilmediğini veya bozulmadığını doğrulamak için sağlama toplamı olarak kullanılırlar. Ayrıca "iş kanıtı" senaryolarında da kullanılırlar; tamamlanması zor ancak doğrulanması kolay hesaplamalı görevler.
Bu karma ile sonuçlanacak bir mesaj (herhangi bir mesaj) üretmek için bir SHA256 karma özetini verimli bir şekilde tersine çevirmenin bir yolunu bulsaydınız, aslında karma işlemin esasen kırıldığını göstererek bir kanıt olurdu. Aslında, SHA256 güvenli olduğuna inanılıyor, yani ne kadar pratik olursa olsun, bir karma özetle başlamak ve her olasılığı denemekten daha az çalışma gerektiren bir çarpışma mesajı üretmek için belgelenmiş bir yöntem yok (SHA-256 için ideal olan 2) ^ 256 ~ = 10 ^ 77 olasılık).