PHP kodlama ve URL sıkıştırma

4 Cevap php

Ne kadar kolay kodlamak ve PHP dizeye "sıkıştırmak" URL / e-posta adresine?

Dize olmalıdır:

  1. kullanıcının şifresini çözmek çok zor
  2. mümkün olan en kısa (sıkıştırılmış)
  3. similar URLs should be different after encoding
  4. değil veritabanında
  5. PHP script tarafından / sıkıştırmasını çözmek kolay


ex. input -> output, stackoverflow.com/1/ -> "n3uu399", stackoverflow.com/2/ -> "ojfiejfe8"

4 Cevap

Çok kısa değil ama olabilir zip bunu bir şifre ile ve kullanarak kodlamak base64. O zip is not too safe when it comes to passwords Not, ancak şifrelenmiş değer bir kısa ömürlü olması için tasarlanmıştır eğer ok olmalıdır.

Eğer yerel olarak bazı unaccessible bilgi depolamak için kabul sürece ne yaparsan yap, sen biraz güvenli bir kodlama oluşturmak mümkün olmayacaktır unutmayın. Bu verilen olarak, anyone bu ters sizin algoritma mühendislik tarafından olmak, yeterli zaman sözde şifreli verilere erişebilir götürün ne olursa olsun, anlamı, kaba-zorlama şifrelerinizi ya da başka ne gereklidir.

URL başlar eğer başlarsa, o zaman kısaltılmış URL ilk karakteri 'a', '{[(1)]' http://www. ': Ortak dizelere dayalı kendi metin sıkıştırma sistemi yapabilirdiniz }. b ', sonra ilk karakteri' ... (popüler varyantları için tekrar) değil, daha sonra ilk harfi ise 'z' ve url kodlanmış desen izler.

Sonraki üç harf 'abc' ise, ikinci harf letter çiftleri / üçüz URL'leri en yaygın bir listesini gerekir ve en popüler 26/50 vb (hangi bağlı hallederiz 'a' vb olup siz) kullanmak istiyorsanız ve (), bir veritabanı kullanmadan PHP tamamen URL bazı sıkıştırma yapmak gerekir karakterler. İnsanlar sadece iki mektup çift / üçlü listesi (eşleme listesi) bilerek veya elle ters-mühendislik yoluyla bunu tersine çevirmek mümkün olacaktır.

İşte ya da ihtiyaçlarınızı karşılamak olmayabilir basit bir uygulamasıdır:

Input/Output:

test@test.com    cyUzQTEzJTNBJTIydGVzdCU0MHRlc3QuY29tJTIyJTNC             test@test.com  
http://test.com/ cyUzQTE2JTNBJTIyaHR0cCUzQSUyRiUyRnRlc3QuY29tJTJGJTIyJTNC http://test.com/

Code:

function encode ($in) {
    return base64_encode(rawurlencode(serialize($in)));
}

function decode ($in) {
    return unserialize(rawurldecode(base64_decode($in)));
}

shrug

Eğer girişler ve çıkışlar ve ne her beklediğiniz hakkında daha spesifik olması gerekir.

Ayrıca gzcompress / gzuncompress yerine serialize / unserialize, vb kullanabilirsiniz

if you have access to a database then you could do a relational lookup i.e. there will be 2 fields, field one holding the original URL and the second holding the compressed URL. To make the second URL you could do something like the following

$str = "a b c d e f g h i j k l m n o p q r s t u v w x y z";

$str = explode(" ", $str);
$len = 5;

for($i = 0; $i < $len; $i++)
{
    $pos = rand(0, (count($str) - 1));
    $url .= $str[$pos];
}

Bu i kadar düşündüm bu sadece bir fikir, kodu test edilmez