Şifremi şifrelemek için bir tuzlu CRYPT_MD5 kullandığınızda ne şifreli ediliyor?

4 Cevap php

Hayır sembolleri: bir dize üzerine md5 kullanarak her zaman bir alfa-sayısal şifreli sonuç, yani üretir.

Ben php crypt () işlevi, özellikle CRYPT_MD5 kullanırken Ancak, bir tuz ile (ve üzerinde, kontrol ettim), döndürdüğü sözde md5 hash bir md5 hash gibi görünmüyor.

Örneğin:

Ben dize 'şifre' md5, ben alıyorum:

$pass = md5('password');
echo $pass;
//5f4dcc3b5aa765d61d8327deb882cf99

: Ben '$ 1 $' öneki ve tuz 'tuz' olan '$' eki ile belirtilir CRYPT_MD5, kullanırsanız

$pass = crypt('password', '$1$salt$');
echo $pass;
//$1$salt$qJH7.N4xYta3aEG/dfqo/0

Şimdi, kullanılan algoritma ve tuz beklendiği gibi gösterilmiştir, CRYPT_MD5 kullanıldı ve tuz $ işaretler arasında olduğu gibi "tuz" olduğu gösterilir bu '$ 1 $' göstermektedir.

Ancak .. bu son $ işaretinden sonra karma şifre bunun içinde eğik ve tam durak vardır ... bir md5 gibi görünmüyor.

Neden bu şekilde karma nedir? Bu gerçek bir md5 mi?

Beni bu herhangi bir açıklığa kavuşturmak için gerekiyorsa isteyin. Ugh.

4 Cevap

  1. MD5 karma algoritması değil şifreleme olduğunu.
  2. MD5 çıkış verileri 128 bit. İlk örnek, 32 onaltılık basamak (rakam başına 4-bit) olarak 128 bit kodlama edilir. Karakter başına 6 bit olarak 21 karakter - İkinci örnek crypt alfabede ./0-9A-Za-z bulunmaktadır.

Crypt algoritması hakkında daha fazla bilgi için http://www.gnu.org/software/libtool/manual/libc/crypt.html

Sen doğru, 5f4dcc3b5aa765d61d8327deb882cf99 dize "password" MD5. Bu tuz ekledi, ancak kolayca MD5 alarak birini ekleyebilirsiniz ("parola". "$ Tuz")

Ancak, PHP crypt () fonksiyonu karma hesaplamak için farklı sağlamalarının çeşitli kullanabilirsiniz. Eğer "$ 1 $" ile tuz öneki zaman bir MD5 ile bir karma olsun. 2 $ ile öneki zaman $ daha güvenli balon balığına sahip bir mezarı olsun.

Karma doğrulanmış böylece "$ 1 $" çıkışına öneki. O dahil değilse, algoritma kullanılması gerektiğini saklanan karma biliyorum yolu yoktur olurdu! Bu bilgiler, başka bir yerde saklanabilir olması gerekir. Size PHP karma çıktı algoritmayı içeren bu sorun kaydetmek için.

Yani karma, doğrulamak için şifre olarak kullanıcı tarafından sağlanan parolayı almak ve tuz gibi üçüncü dollarsign kadar her şeyi almak ve almak sonuçları depolanır sonuçları maç olmadığını görmek.

Lütfen karışıklık sonraki kısmı crypt () fonksiyonu size Base64 kodlu bir karma veriyor ise MD5 () işlevi, bir altıgen karma veriyor olmasıdır. Base64 daha verimli olmasıdır.

Basit?

Sadece düzgün bir dize olarak biçimlendirilmiş değil, bir MD5 hash. Size bir sorun vermemelidir.

These are my thoughts - not sure if correct. md5 calculates a hash whereas crypt performs encryption - albeit using an md5 flavour. Hashes are 1-way, and give fixed length results for arbitrary length input. Encryption is 2-way and doesn't give fixed length results.

Benim tahminim MD5 hash RFC muhtemelen şifreleme böyle bir sınırlama yoktur oysa, [az] [0-9] [AZ] kullanmak sonucu tanımlar olmasıdır.