Короткие хэши в URL.
Сегодня думал как сделать. http://pastebin.com/US7yN4qB вот что придумал. Такие хэши получаются 56U1z, собс-но похоже на pastebin. я с расчетом на то что этот будет использоваться для доступа к приватному ресурсу, либо приглашение в приложение и т.д.
Сначала думал md5 использовать
parseInt('5d7845ac6ee7cfffafc5fe5f35cf666d', 32)
2.4723739311530062e+47
base62.encode( parseInt('5d7845ac6ee7cfffafc5fe5f35cf666d', 32) );
"6B6jW1fN7g4ckQwmokEwqAWMw2a"
но ссылка слишком длинная, да и точность теряется. Как бы вы решили эту задачу? |
( function() {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
base62 = {
encode: function(n) {
var s = '';
do {
s = chars[n % 62] + s;
}
while ( n = Math.floor(n / 62) );
return s;
},
decode: function(s) {
var q = s.length,
w,
e = 0,
r = 0;
while (q--) {
if ( w = chars.indexOf(s[q]) ) {
r += w * Math.pow(62, e);
}
++e;
}
return r;
}
}
} )();
Это base62 конвертер для yoba-script мож кому потребуется |
base62.encode(100000000000);
"1l9Zo9o" |
Цитата:
|
5 случаных символов - это 900 миллионов комбинаций, если известен id
|
base62.decode('zzzzz') - base62.decode('10000')
901356495
|
Ну да, если по 10 запросов в секунду, то понадобится почти три года чтобы обойти все варианты. Однако быстрее нужную ссылку сольет какой-нибудь яндекс.бар (конечно если ссылка не одноразовая) ))
|
можно добавить еще два символа случайных и тогда 10.000 лет на брут придется затратить
|
| Часовой пояс GMT +3, время: 08:21. |