Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Короткие хэши в URL. (https://javascript.ru/forum/server/37809-korotkie-khehshi-v-url.html)

qwerty-клавиатура 07.05.2013 20:34

Короткие хэши в URL.
 
Сегодня думал как сделать. http://pastebin.com/US7yN4qB вот что придумал. Такие хэши получаются 56U1z, собс-но похоже на pastebin. я с расчетом на то что этот будет использоваться для доступа к приватному ресурсу, либо приглашение в приложение и т.д.

Сначала думал md5 использовать

parseInt('5d7845ac6ee7cfffafc5fe5f35cf666d', 32)
2.4723739311530062e+47
base62.encode( parseInt('5d7845ac6ee7cfffafc5fe5f35cf666d', 32) );
"6B6jW1fN7g4ckQwmokEwqAWMw2a"


но ссылка слишком длинная, да и точность теряется. Как бы вы решили эту задачу?

qwerty-клавиатура 07.05.2013 20:36

( 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 мож кому потребуется

qwerty-клавиатура 07.05.2013 22:49

base62.encode(100000000000);
"1l9Zo9o"

danik.js 07.05.2013 23:33

Цитата:

Сообщение от qwerty-клавиатура
для доступа к приватному ресурсу

Как этот ресурс будет защищен от брутфорса?

qwerty-клавиатура 08.05.2013 01:20

5 случаных символов - это 900 миллионов комбинаций, если известен id

qwerty-клавиатура 08.05.2013 01:22

base62.decode('zzzzz') - base62.decode('10000') 
901356495

danik.js 08.05.2013 01:47

Ну да, если по 10 запросов в секунду, то понадобится почти три года чтобы обойти все варианты. Однако быстрее нужную ссылку сольет какой-нибудь яндекс.бар (конечно если ссылка не одноразовая) ))

qwerty-клавиатура 08.05.2013 02:11

можно добавить еще два символа случайных и тогда 10.000 лет на брут придется затратить


Часовой пояс GMT +3, время: 00:57.