it-swarm-tr.com

Karma ve Şifreleme algoritmaları arasındaki temel fark

Karma ve şifreleme algoritmaları arasında çok fazla karışıklık görüyorum ve bu konuda daha fazla uzman tavsiyesi duymak istiyorum:

  1. Şifreler vs şifreler ne zaman kullanılır

  2. Bir hash veya şifreleme algoritmasını farklı kılan (teorik/matematiksel seviyeden) yani hash'leri geri döndürülemez kılan (bir Gökkuşağı ağacının yardımı olmadan)

İşte bazı benzer SO Aradığım kadar ayrıntıya girmeyen sorular:

Şaşırtma, Karma ve Şifreleme arasındaki fark nedir?
Şifreleme ve karma alma arasındaki fark

482
Kenny Cason

Şey, şuna bakabilirsin Wikipedia ... Ama bir açıklama istediğinden beri, burada elimden gelenin en iyisini yapacağım:

Karma İşlevleri

İsteğe bağlı uzunluk girişi ve (genellikle) sabit uzunluk (veya daha küçük uzunluk) çıkışı arasında bir eşleme sağlarlar. Basit bir crc32'den, MD5 veya SHA1/2/256/512 gibi tam gelişmiş bir şifreleme karma işlevine kadar olan herhangi bir şey olabilir. Mesele şu ki, tek yönlü bir haritalama var. Her zaman çoktur: 1 haritalama (her zaman çarpışma olacak) çünkü her fonksiyon girebildiğinden daha küçük bir çıktı üretir (Her 1mb dosyasını MD5'e beslerseniz, bir ton çarpışma elde edersiniz).

Geri dönmeleri zor (veya pratikte imkansız) olma nedenleri, içeriden nasıl çalıştıklarıdır. Çoğu şifreleme karma işlevi, çıktı üretmek için girdi kümesinde birçok kez yinelenir. Bu nedenle, girişin her sabit uzunluğuna bakarsak (algoritmaya bağlı olan), karma fonksiyonu o andaki durumu çağırır. Daha sonra devlet üzerinde tekrar eder ve onu yenisiyle değiştirir ve bunu kendi içine geri bildirim olarak kullanır (MD5 bunu her 512bit veri yığını için 64 kez yapar). Daha sonra, bir şekilde, sonuçta ortaya çıkan karmaşayı oluşturmak için tüm bu yinelemelerden ortaya çıkan durumları bir araya getirir.

Şimdi, karma kodunun kodunu çözmek istiyorsanız, önce verilen karma değerinin yinelenen durumlarına nasıl ayrılacağını bulmanız gerekir (bir veri yığınının boyutundan daha küçük girişler için 1 olasılık, daha büyük girişler için). O zaman her eyalet için yinelemeyi tersine çevirmeniz gerekir. Şimdi, bunun neden ÇOK zor olduğunu açıklamak için, aşağıdaki değişkenden a ve b öğelerini çıkarmaya çalıştığınızı hayal edin: 10 = a + b. Çalışabilir a ve b 10 olumlu kombinasyonları vardır. Şimdi bunu bir kaç kez tekrarlayın: tmp = a + b; a = b; b = tmp. 64 yinelemede denemek için 10 ^ 64 imkanınız olacaktı. Ve bu sadece bazı durumların yinelemeden yinelemeye kadar korunduğu basit bir eklentidir. Gerçek karma işlevleri 1'den fazla işlem yapar (MD5, 4 durum değişkeninde yaklaşık 15 işlem yapar). Bir sonraki yineleme önceki durumun durumuna bağlı olduğundan ve önceki durum mevcut durumun yaratılmasında tahrip edildiğinden, belirli bir çıkış durumuna yol açan giriş durumunu belirlemek imkansızdır (her yineleme için en az). Bunu, çok sayıda olasılıkla birleştirin ve bir MD5'in kodunu çözmenin neredeyse sonsuz (ancak sonsuz değil) kaynak alacağını kesinleştirin. Eğer girişin büyüklüğü hakkında bir fikriniz varsa (daha küçük girişler için), hash kodunu çözmeyi denemekten çok daha ucuz olan o kadar çok kaynak vardır.

Şifreleme İşlevleri

İsteğe bağlı uzunluk girişi ve çıkışı arasında 1: 1 eşleme sağlarlar. Ve her zaman geri dönüşümlüdürler. Unutulmaması gereken önemli şey, bazı yöntemler kullanarak geri dönüşümlü olmasıdır. Ve verilen anahtar için her zaman 1: 1 olur. Şimdi, birden fazla girdi var: aynı çıktıyı üretebilecek anahtar çiftleri (aslında şifreleme işlevine bağlı olarak genellikle vardır). İyi şifrelenmiş veriler rastgele seslerden ayırt edilemez. Bu, her zaman tutarlı bir biçimde olan iyi bir karma çıktısından farklıdır.

Durumlarda kullanın

Bir değeri karşılaştırmak istediğinizde ancak düz gösterimi saklayamadığınızda bir karma işlevi kullanın (herhangi bir nedenden dolayı). Parolalar bu kullanım durumuna çok uygun olmalıdır, çünkü güvenlik nedeniyle düz metin saklamak istemezsiniz (ve olmamalıdır). Peki ya korsan müzik dosyaları için bir dosya sistemini kontrol etmek istiyorsanız? Müzik dosyası başına 3 mb depolamak pratik olmaz. Bu yüzden, bunun yerine, dosyanın karma değerini alın ve saklayın (md5, 3mb yerine 16 bayt depolar). Bu yolla, her bir dosyayı yalnızca hash eder ve saklanan karmaları veritabanıyla karşılaştırırsınız (Bu, yeniden kodlama, dosya başlıklarını değiştirme vb. Nedeniyle pratikte işe yaramaz, ancak bu bir örnek kullanım durumudur).

Giriş verilerinin geçerliliğini kontrol ederken bir karma işlevi kullanın. Onlar bunun için tasarlandı. 2 giriş parçanız varsa ve bunların aynı olup olmadığını kontrol etmek istiyorsanız, her ikisini de bir karma fonksiyonundan geçirin. Bir çarpışma olasılığı, küçük giriş boyutları için astronomik olarak düşüktür (iyi bir karma işlevi varsayar). Bu yüzden şifreler için önerilir. 32 karaktere kadar olan şifreler için md5, çıktı alanının 4 katına sahiptir. SHA1'de 6 kat çıktı alanı var (yaklaşık olarak). SHA512, çıktı alanının yaklaşık 16 katıdır. Parolanın ne olduğu ile gerçekten ilgilenmiyorsunuz, saklanan ile aynı olup olmadığını umursuyorsunuz. Bu yüzden şifreler için hash kullanmalısınız.

Giriş verilerini geri almanız gerektiğinde şifrelemeyi kullanın. Kelimeye ihtiyaç duyduğunuza dikkat edin. Kredi kartı numaralarını saklıyorsanız, bir noktada geri almanız gerekir, ancak düz metinleri saklamak istemezsiniz. Bunun yerine şifreli sürümü saklayın ve anahtarı mümkün olduğu kadar güvenli tutun.

Hash işlevleri ayrıca veri imzalamak için mükemmeldir. Örneğin, HMAC kullanıyorsanız, bilinen ancak iletilmeyen bir değerle (gizli bir değer) birleştirilen verilerin bir karma değerini alarak bir veri parçasını imzalarsınız. Öyleyse, düz metni ve HMAC karmasını gönderirsiniz. Daha sonra, alıcı gönderilen veriyi bilinen değere göre sınıflandırır ve iletilen HMAC ile eşleşip eşleşmediğini kontrol eder. Aynı ise, gizli bir değeri olmayan bir parti tarafından tahrif edilmediğini biliyorsunuzdur. Bu, HTTP çerezleri tarafından güvenli çerez sistemlerinde ve ayrıca verilerde bir bütünlük güvencesi almak istediğiniz verilerin HTTP üzerinden iletilen iletilerinde yaygın olarak kullanılır.

Şifreler için hasheler hakkında bir not:

Şifreleme hash işlevlerinin temel bir özelliği de, oluşturmalarının çok hızlı olması ve çok geri dönüşlerinin zor/yavaş olması (pratikte imkansız olması için çok fazla) olmasıdır. ). Bu şifreleri ile ilgili bir sorun teşkil etmektedir. sha512(password) dosyasını saklarsanız, Rainbow tablolarına veya kaba kuvvet saldırılarına karşı korunmak için bir şey yapmazsınız. Unutma, karma işlevi hız için tasarlandı. Bu yüzden bir saldırganın sadece bir hash işlevi üzerinden bir sözlük çalıştırması ve her sonucu test etmesi önemsizdir.

Bir tuz eklemek, hash'a bir miktar bilinmeyen veri eklediği için sorunlara yardımcı olur. Bu yüzden md5(foo) ile eşleşen bir şey bulmak yerine, bilinen tuza eklendiğinde md5(foo.salt) (bunun yapılması çok daha zor olan) üreten bir şey bulmaları gerekir. Ama yine de hız problemini çözmüyor çünkü tuzu bilirlerse sözlüğü çalıştırmanın bir nedeni.

Yani bununla başa çıkmanın yolları var. Popüler yöntemlerden biri anahtar güçlendirme (veya anahtar germe) olarak adlandırılır. Temel olarak, bir karma çok kez yinelenir (genellikle binlerce). Bu iki şey yapar. İlk olarak, karma algoritmasının çalışma zamanını önemli ölçüde yavaşlatır. İkincisi, eğer doğru bir şekilde uygulanırsa (girdi ve tuzu her bir tekrarlamaya geri döndürmek) aslında çıktı için entropiyi arttırır, çarpışma ihtimalini azaltır. Önemsiz bir uygulama:

var hash = password + salt;
for (var i = 0; i < 5000; i++) {
    hash = sha512(hash + password + salt);
}

PBKDF2 , BCrypt ​​gibi daha standart uygulamalar var. Ancak bu teknik, güvenlikle ilgili birkaç sistem tarafından kullanılır (PGP, WPA, Apache ve OpenSSL gibi).

Alt satırda, hash(password) yeterince iyi değil. hash(password + salt) daha iyi, ama yine de yeterince iyi değil ... Parola hashlerinizi üretmek için uzatılmış bir karma mekanizması kullanın ...

Önemsiz germe ile ilgili başka bir not

Hiçbir koşulda bir karma çıktısını doğrudan karma işlevine geri göndermeyin :

hash = sha512(password + salt); 
for (i = 0; i < 1000; i++) {
    hash = sha512(hash); // <-- Do NOT do this!
}

Bunun sebebi çarpışmalarla ilgili. Tüm karma işlevlerinin çarpışmalara sahip olduğunu unutmayın; çünkü olası çıktı alanı (olası çıktıların sayısı) girdi alanından daha küçüktür. Nedenini görmek için, ne olduğuna bakalım. Bunun önüne geçmek için, sha1() öğesinden% 0.001 oranında çarpışma olasılığı olduğunu varsayalım (bu, çok daha düşük, ancak gösterim amaçlıdır).

hash1 = sha1(password + salt);

Şimdi, hash1% 0.001 arası çarpışma olasılığı var. Ancak bir sonraki hash2 = sha1(hash1); işlevini yaptığımızda, hash1 ÖĞESININ TÜM ÇARPIŞMALARI OTOMATIK OLARAK hash2 çarpışmaları haline gelir. Şimdi, hash1'in oranı% 0,001, ve 2. sha1() çağrısı buna ekliyor. Şimdi, hash2% 0,002 çarpışma ihtimaline sahip. Bu iki kat daha fazla şans! Her yineleme, sonuca başka bir 0.001% çarpışma şansı ekleyecektir. Bu nedenle, 1000 yineleme ile çarpışma şansı% 0.001'den% 1'e yükseldi. Şimdi, bozulma doğrusaldır ve gerçek olasılıklar çok uzak daha küçüktür, ancak etki aynıdır (tek bir çarpışma olasılığının tahmini) md5 yaklaşık 1/(2)128) veya 1/(3x1038). Bu küçük görünse de, doğum günü saldırısı sayesinde göründüğü kadar küçük değil).

Bunun yerine, her seferinde tuzu ve şifreyi yeniden ekleyerek, verileri karma işlevine yeniden sokuyorsunuz. Bu nedenle, belirli bir turdaki herhangi bir çarpışma artık bir sonraki turun çarpışması değildir. Yani:

hash = sha512(password + salt);
for (i = 0; i < 1000; i++) {
    hash = sha512(hash + password + salt);
}

Yerel sha512 işlevi ile aynı çarpışma şansına sahiptir. İstediğin şey bu. Bunun yerine kullanın.

698
ircmaxell

Bir karma işlevi, bir somun ekmek pişirmekle aynı sayılabilir. Girdilerle (un, su, maya, vb ...) başlarsınız ve hash fonksiyonunu uyguladıktan sonra (karıştırma + pişirme), bir sonuç verirsiniz: bir somun ekmek.

Diğer tarafa gitmek son derece zordur - ekmeği gerçekten un, su, mayaya ayıramazsınız - bir kısmı pişirme işlemi sırasında kaybedildi ve bunun için ne kadar su ya da un ya da maya kullanıldığını asla söyleyemezsiniz. belirli bir somun, çünkü bu bilgi toplama fonksiyonu (yani fırın) tarafından tahrip edildi.

Girdilerin birçok farklı çeşidi teorik olarak aynı somunları üretecektir (örneğin 2 bardak su ve 1 tsbp maya ile aynı somunu 2.1 bardak su ve 0.9tsbp maya üretecektir), ancak bu somunlardan birine verildiğinde, söyleyemezsiniz tam olarak ne girdilerin ürettiği.

Şifreleme, diğer taraftan, güvenli bir kasa olarak görülebilir. Ne koyduysanız, ilk başta kilitlendiği anahtara sahip olduğunuz sürece geri gelir. Simetrik bir işlem. Bir anahtar ve bazı girdiler verildiğinde, belli bir çıktı elde edersiniz. Bu çıktı ve aynı anahtar göz önüne alındığında, orijinal girişi geri alırsınız. 1: 1 haritalama.

155
Marc B

Orijinal girişi geri almak istemiyorsanız karma kullanın, yaptığınız zaman şifreleme kullanın.

Hash'ler bir miktar girdi alır ve onu bir bit'e dönüştürür (genellikle bir 32 bit tam sayı, 64 bit tam sayı gibi bir sayı olarak düşünülür). Aynı giriş her zaman aynı karıĢı üretecektir, ancak süreçte PRENSİP olarak kaybedersiniz, böylece orijinal girişi güvenilir bir şekilde yeniden üretemezsiniz (bunun için birkaç uyarı vardır).

Şifreleme, şifreleme işlevine koyduğunuz tüm bilgileri temel olarak korur, herhangi birinin belirli bir anahtara sahip olmadan orijinal girişe geri dönmesini zorlaştırır (ideal olarak imkansız).

Basit Hashing Örneği

İşte hashlamanın neden (genel durumda) orijinal girdiyi geri alamadığını anlamanıza yardımcı olacak önemsiz bir örnek. Diyelim ki 1-bit karma oluşturuyorum. Hash fonksiyonum girdi olarak bit dizgisini alır ve girdi dizisinde ayarlanan çift bit sayısı varsa hash değerini 1, tek sayı varsa 0 olarak ayarlar.

Örnek:

Input    Hash
0010     0
0011     1
0110     1
1000     0

Karma değerinin 0 olmasıyla sonuçlanan birçok giriş değeri olduğunu ve çoğu değerin 1 olmasıyla sonuçlandığını unutmayın. Karma değerin 0 olduğunu biliyorsanız, orijinal girişin ne olduğundan emin olamazsınız.

Bu arada, bu 1-bit karma tam olarak anlaşılmaz ... bir göz atın parite bit .

Basit Şifreleme Örneği

Basit bir harf değişimini kullanarak metni şifreleyebilirsiniz, giriş A ise, B yazın. Giriş B ise C yazın. Alfabenin sonuna kadar, giriş Z ise, tekrar A yazın.

Input   Encrypted
CAT     DBU
Zoo     APP

Basit karma örnekte olduğu gibi, bu şifreleme türü de tarihsel olarak kullanılmıştır .

41
Eric J.

Karma ve şifreleme/şifre çözme tekniklerine genel bakış.

Karma:

Eğer karma herhangi bir düz metin tekrar ederseniz aynı düz metni karma metinden alamazsınız. Basitçe, bu tek yönlü bir işlem.

hashing


Şifreleme ve Şifre Çözme:

Eğer şifrelemek herhangi bir düz metin tekrar bir tuşla siz aynı düz metni alabilirsiniz şifreli metin üzerinde şifre çözme yaparak Aynı (simetrik)/diffrent (asimetrik) tuşuyla.

encryption and decryption


GÜNCELLEME: Düzenlenen soruda belirtilen noktaları ele almak için.

1. Hash vs şifreler ne zaman kullanılır

Hashing birisine dosya göndermek istiyorsanız kullanışlıdır. Ancak, başka birinin dosyayı ele geçirip değiştirebileceğinden korkuyorsunuz. Bu yüzden, alıcının doğru dosya olduğundan emin olabilmesinin bir yolu, hash değerini herkese açık olarak vermenizdir. Bu şekilde alıcı, alınan dosyanın karma değerini hesaplayabilir ve karma değerle eşleştiğini kontrol edebilir.

Şifreleme, birine gönderilecek bir mesajınız olduğunu söylerseniz iyidir. Mesajı bir anahtarla şifrelersiniz ve alıcı orijinal mesajı geri almak için aynı (veya belki de farklı) bir anahtarla şifresini çözer. kredi


2. Bir hash veya şifreleme algoritmasını farklı kılan (teorik/matematiksel bir seviyeden) yani hashları geri döndürülemez kılan (bir Gökkuşağı ağacının yardımı olmadan) =

Temelde karma, bilgileri kaybeden ancak şifrelemeyen bir işlemdir. Farkımıza basit matematiksel yoldan bakalım kolay anlaşılmamız için , elbette her ikisi de, içinde yer alan tekrarlarla çok daha karmaşık matematiksel işlemlere sahiptir.

Şifreleme/Şifre Çözme (Tersinir):

Eklenen:

4 + 3 = 7  

Bu, toplamı alarak ve eklerden birini çıkartarak tersine çevrilebilir

7 - 3 = 4     

Çarpma:

4 * 5 = 20  

Bu, ürünü alarak ve faktörlerden birine bölerek tersine çevrilebilir

20 / 4 = 5    

Böylece, burada eklerden/faktörlerden birinin bir decrpytion anahtarı olduğunu ve sonucun (7, 20) şifreli bir metin olduğunu varsayabiliriz.


Hashing (Tersinir Değil):

Modulo bölümü:

22 % 7 = 1   

Bu tersine çevrilemez çünkü bölüme ve böleni yeniden oluşturmak için temettü (veya tam tersi) için yapabileceğiniz hiçbir işlem yoktur.

'' Doldurulması gereken bir işlem bulabilir misiniz? ' nedir?

1  ?  7 = 22  
1  ?  22 = 7

Böylece hash fonksiyonları modulo bölünmesiyle aynı matematiksel kaliteye sahiptir ve bilgiyi gevşetir.

kredi

36
mrsrinivas

Bir liner'ım ... genelde röportajcı aşağıdaki cevabı istedi.

Hashing bir yoludur. Verilerinizi/dizginizi bir karma kodundan dönüştüremezsiniz.

Şifreleme 2 yollu - sizinle anahtarınız varsa şifreli dizenin şifresini tekrar çözebilirsiniz.

25
Shiv Mohan

A Karma işlevi değişken boyutlu bir metni sabit boyutlu bir metne dönüştürür.

Hash

Kaynak: https://en.wikipedia.org/wiki/Hash_function

Eylemde görelim. Bunun için php kullanıyorum.

HASH:

$str = 'My age is 29';
$hash = hash('sha1', $str);
echo $hash; // OUTPUT: 4d675d9fbefc74a38c89e005f9d776c75d92623e

DEHASH:

SHA1 tek yönlü bir karmaştir. Bu, kargaşayı mahvedemeyeceğin anlamına geliyor. Bununla birlikte, hash'la kaba kuvvet uygulayabilirsiniz. Lütfen bakınız: https://hashkiller.co.uk/sha1-decrypter.aspx .

MD5, başka bir karmadır. Bu web sitesinde bir MD5 temizleyici bulunabilir: https://www.md5online.org/ .


Bir Şifreleme işlevi bir metni bir şifreleme anahtarı kullanarak saçma bir şifreleme metne dönüştürür ve bunun tersi de geçerlidir. enter image description here

Kaynak: https://en.wikipedia.org/wiki/Encryption

Şifrelemeyi işleyen PHP koduna dalalım.

--- Mcrypt uzantısı ---

ŞİFRELE:

$cipher = MCRYPT_RIJNDAEL_128;
$key = 'A_KEY';
$data = 'My age is 29';
$mode = MCRYPT_MODE_ECB;

$encryptedData = mcrypt_encrypt($cipher, $key , $data , $mode);
var_dump($encryptedData);

//OUTPUT:
string '„Ùòyªq³¿ì¼üÀpå' (length=16)

Şifresini:

$decryptedData = mcrypt_decrypt($cipher, $key , $encryptedData, $mode);
$decryptedData = rtrim($decryptedData, "\0\4"); // Remove the nulls and EOTs at the END
var_dump($decryptedData);

//OUTPUT:
string 'My age is 29' (length=12)

--- OpenSSL genişletmesi ---

Mcrypt eklentisi 7.1'de kullanımdan kaldırıldı. ve php 7.2'de kaldırılmıştır. OpenSSL uzantısı php 7'de kullanılmalıdır. Aşağıdaki kod parçacıklarına bakın:

$key = 'A_KEY';
$data = 'My age is 29';

// ENCRYPT
$encryptedData = openssl_encrypt($data , 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($encryptedData);

// DECRYPT    
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($decryptedData);

//OUTPUT
string '4RJ8+18YkEd7Xk+tAMLz5Q==' (length=24)
string 'My age is 29' (length=12)
15
Julian

Simetrik Şifreleme:

Simetrik şifreleme ayrıca paylaşılan anahtar veya paylaşılan gizli şifreleme olarak da ifade edilebilir. Simetrik şifrelemede, trafiği şifrelemek ve şifresini çözmek için tek bir anahtar kullanılır.

enter image description here

Asimetrik Şifreleme:

Asimetrik şifreleme ayrıca genel anahtar şifreleme olarak da bilinir. Asimetrik şifreleme, simetrik şifrelemeden farklı olarak öncelikle iki anahtar kullanılır: biri şifreleme, biri şifre çözme için. En yaygın asimetrik şifreleme algoritması RSA'dir.

Simetrik şifreleme ile karşılaştırıldığında, asimetrik şifreleme yüksek bir işlem yükü getirir ve çok daha yavaş olma eğilimindedir. Bu nedenle, tipik olarak veri yükünü korumak için kullanılmaz. Bunun yerine, en büyük gücü güvensiz bir ortamda (örneğin, İnternet) güvenli bir kanal oluşturma yeteneğidir. Bu, yalnızca verileri şifrelemek için kullanılabilen ortak anahtarların değişimi ile gerçekleştirilir. Asla paylaşılmayan tamamlayıcı özel anahtar şifresini çözmek için kullanılır.

enter image description here

Hashing:

Son olarak, karma, şifrelemeden farklı bir şifreleme güvenliği biçimidir. Şifreleme ilk önce bir mesajı şifrelemek ve daha sonra şifresini çözmek için kullanılan iki aşamalı bir işlemdir, hash, bir mesajı geri dönüşü olmayan bir sabit uzunlukta değer veya hash haline getirir. Ağda en sık rastlanan karma algoritmalardan ikisi MD5 ve SHA-1 'dır.

enter image description here

Buradan daha fazla bilgi edinin: http://packetlife.net/blog/2010/nov/23/symmetric-asymmetric-encryption-hashing/

9

Şifreleme ve karma algoritmalar benzer şekillerde çalışır. Her durumda, bitler arasında karışıklık ve yayılma yaratma ihtiyacı vardır. Kaynatılmış, karışıklık , anahtar ile şifreli metin arasında karmaşık bir ilişki oluşturuyor ve difüzyon etrafındaki her bitin bilgisini yayıyor.

Çoğu karma işlevi aslında şifreleme algoritmalarını (veya şifreleme algoritmalarının ilkellerini) kullanır. Örneğin, SHA-3 adayı Skein , her bloğu işlemek için temel metot olarak Threefish kullanır. Şifreli metin, yıkıcı olarak, belirleyici bir şekilde birbirine sabit bir uzunlukta birleştirilirler.

4
Justin Morgan
  1. Yalnızca bir yöne gitmeniz gerektiğinde karmaları kullanın. Örneğin, bir sistemdeki şifreler için karma kullanırsınız, çünkü bir kullanıcının girdikten sonra, karma değerinden sonra deponuzdaki değerle eşleştiğini doğrularsınız. Şifreleme ile iki yoldan gidebilirsiniz.

  2. karma algoritmalar ve şifreleme algoritmaları sadece matematiksel algoritmalardır. Yani bu açıdan onlar farklı değil - hepsi sadece matematiksel formüller. Anlambilim akıllıca olsa da, karma (tek yönlü) ve şifreleme (iki yönlü) arasında çok büyük bir fark vardır. Neden hashlar geri döndürülemez? Çünkü bu şekilde tasarlanırlar, çünkü bazen tek yönlü bir işlem istersiniz.

4
hvgotcodes

veri iletimi için güvenlik söz konusu olduğunda, yani şifrelemeyi kullandığınız iki yönlü iletişim.

söz konusu olduğunda, karma kullanıyorsunuz. karma kullanımda anahtar yok

Karma, herhangi bir miktarda veriyi (ikili veya metin) alır ve veriler için sağlama toplamını temsil eden sabit uzunlukta bir karma oluşturur. Örneğin, karma 16 bayt olabilir. Farklı karma algoritmaları, farklı boyutta karma üretir. Açıkçası, orijinal verileri karma değerinden yeniden oluşturamazsınız, ancak aynı karma değerin üretilip üretilmediğini görmek için verileri tekrar karma yapabilirsiniz. Tek yönlü Unix tabanlı şifreler bu şekilde çalışır. Parola bir karma değeri olarak saklanır ve bir sistemde oturum açmak için, yazdığınız parola karma olur ve karma değeri, gerçek parolanın karma değeriyle karşılaştırılır. Eşleşirlerse, doğru şifreyi girmiş olmanız gerekir.

neden hash geri döndürülemez:

Karma-giriş girişi eşlemesi 1'e 1 olmadığından karma değeri geri döndürülemez. Aynı karma değere sahip iki giriş haritasına sahip olmak genellikle "karma çarpışma" olarak adlandırılır. Güvenlik amacıyla, "iyi" bir karma işlevinin özelliklerinden biri, pratik kullanımda çarpışmaların nadir olmasıdır.

4
ayush