2011-07-11 25 views
5

i googling ve etajer bol yaptık ve ben Web sitem için kimlik doğrulamasını sıkma üzerinde çalışıyorum için ...PHP - dizinin

arıyorum oldukça bulamıyorsanız içine kelimeyi bölün. Kullanıcının kimlik bilgilerini almaya karar verdim ve hashı/tuzları oradan kurtardım. Daha sonra bu değerleri DB'de ve kullanıcı çerezlerinde saklayın. PHP web sitesinde bulduğum bir senaryoyu değiştirdim ve şu ana kadar harika çalışıyor. Ancak array_rand kullanırken, sıralı olarak ön tanımlı dizeden chars seçeceğini fark ettim. Bundan hoşlanmadım, bu yüzden array_rand'd dizisinde bir karışıklık kullanmaya karar verdim. Harika çalıştı.

Sonraki! Kullanıcı şifreli bir şifreyi bir diziye çevirmenin akıllıca olacağını düşündüm, sonra onu tuzlanmış dizimle birleştirin! Eh, kullanıcı şifremi bir dizi içine çevirme konusunda sorun yaşıyorum. Her karakterin şifresinde bir dizi girişi olmasını istiyorum. Şifrenizin "cool" ise IE, dizi Dizisi 0 => c 1 => o 2 => Sonra dize bölmek ile patlamaya kelimeyi denedi vb 3 => l, vb o olurdu Belirtilmemiş ara karakteri, çalışmadı. For döngüsüyle bir şey yapabileceğimi düşünüyorum, strlen ve n'aber, ama daha zarif bir yol olmalı.

Herhangi bir öneriniz var mı? Ben tür stumped :(İşte explodey parçası daha fazla ilerleme kaydedilmedi gibi şimdiye kadar, ben bu ile bitirmedim ne var.

$strings = wordwrap($string, 1, "|"); 
echo $strings . "<br />"; 
$stringe = explode("|", $strings, 1); 
print_r($stringe); 
echo "<br />"; 
echo "This is the exploded password string, for mixing with salt.<hr />"; 

Çok teşekkür ederim :)

cevap

14

yukarıdaki gibi kullanılır, istediğiniz php fonksiyonu

str_split('cool', 1); 

str_split edilir Ve döneceğini

[0] => c 
[1] => o 
[2] => o 
[3] => l 
+0

Bu MÜKEMMEL çalışıyor! Çok teşekkür ederim Colum! Her zaman öğrenecek bir şey :) İyi yolla (((vibes))) yollayın! – Shawn

+1

boş delimter sahip olamaz bunu explode' 'kullanmak Yüklü da – Colum

+0

adamlar öğrenmek için yeni bir şey her zaman vardır :) sadece gevşek yazarak ilişkili değildir –

2

Pe Eğer diziyi bir dizi olarak ele alırsanız, PHP'nin gevşek yazarak anks, php hapilly ne beklediğiniz yapacak. Örneğin:

$string = 'cool'; 
echo $string[1]; // output's 'o'. 
+1

Bu söz gibi hissettim, sadece erişimi alt dize aradı ve ** değil mi ** etmek dizi olarak yanılmak – hakre

+0

Hey toplu, bilgi için teşekkürler. Aslında bunu araştırmıştım ama kelimeyi array_rand için gerçek bir diziye ayırmaya çalışmak oldukça iyi çalışmıyordu. Elbette array_rand bir dizeyi bir dizi olarak ele alıp alamazsa ... Sadece bunun olmayacağını düşündüm. Olumsuz bilgi için teşekkürler :) – Shawn

+0

Çift için özür dilerim, keşke düzenlemek isterdim, array_merge demek istedim. Urf – Shawn

3

Asla, HİÇ uygulamak cryptographical algoritmalar gerçekten ne yaptığınızı bilmedikçe (veya bu durumda, tasarım de!). Devam etmeyi ve yine de yapmaya karar verirseniz, web sitenizi riske atıyorsunuz demektir. bunu yapmak olmalıdır sebep yok: kesinlikle kütüphaneler ve/veya fonksiyonlar zaten bu tür bir şey bütün yapmak yoktur.

+0

Hey, başınız için teşekkürler. Sonunda karma kadar tuz/şifre almak için MD5 kullanacağım. Plan, bir tuz oluşturmak mix parola, parola md5, tuz md5, daha sonra birlikte her karmasını koymak ve bu dizeyi karma ve sonra kullanmak, sonuçta olduğunu DB kimlik/çerez kimlik bilgileri gibi. Bu, kullanıcının ortak şifreler ve/veya kullanıcı adları ile karşı gökkuşağı tablo saldırılarını önleyeceği umudumdur. O zaman, MITM'i önlemek için çerezin ayrıntılarının iletimini korumak için ssl/tls'yi uygulayabileceğim umudumdadır. Bu iyi mi geliyor?Teşekkürler :) – Shawn

+0

MD5 modası geçmiş, ancak SSL/TLS kesinlikle hile yapacak :) – AlexWebr

+0

Ben MD5 gerçekten ona karşı tehditler büyüyen nedeniyle tavsiye edilir duydum. SHA1'in aynısını duydum. SHA256'yı önerir misiniz? MD5'in sadece doğal zayıflığının zayıf kullanıcı girdisi olması doğru değil mi? Bu yüzden 30 karakter tuzu kullanmayı planlıyorum. Yine de hiçbir şekilde guru değilim. Her zaman öğrenme! – Shawn