Короткие хэши в 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, время: 00:57. |