Уменьшение длины MD5

X
На сайте с 26.05.2013
Offline
2
Xel
#21

Разбейте на несколько файлов по какому-нибудь критерию, например первые 4 цифры от MD5. На системы счисления забейте - наименьший объем только в бинарном представлении.

slavegirl
На сайте с 25.06.2012
Offline
388
#22
Xel:
Разбейте на несколько файлов по какому-нибудь критерию, например первые 4 цифры от MD5.

Xel, это уже похоже на внедрение системы индексирования для кэша в текстовых файлах. Это уже третья полезная идея :)

Xel:
На системы счисления забейте - наименьший объем только в бинарном представлении.

В виде числа - да. В виде строки, как мне нужно, к сожалению, нет...

https://t.me/joinchat/RKtR6f68OwU1NzM6  ❤️‍🔥  Сарказм is my orgazm
C
На сайте с 04.02.2005
Offline
277
#23

lByte.toString(16);

???

lByte.toString(32);

???

X
На сайте с 26.05.2013
Offline
2
Xel
#24

Иеще - длину MD5 можно уменьшить на длину префикса, который имя файла - соотвественно еще и расход места уменьшится.

slavegirl
На сайте с 25.06.2012
Offline
388
#25

Chukcha, спасибо за комментарий. Опробовала варианты работы с функцией toString(n). Как оказалось, максимальная разрядность, которую она поддерживает, равна 36. Вот только я забыла о нюансе, что увеличение разрядности системы счисления, например, в 2 раза не дает такого же двойного уменьшения количества позиций итогового числа.

Например, число 99999999 в 10-разрядной системе имеет 8 знаков, а в 36-разрядной оно выглядит так: 1njchr - 6 знаков (экономия всего 2 символа). Полагаю, чтобы уменьшить хэш MD5 с 32 символов до 16 нужна гораздо большая система счисления, для которой символов латинского алфавита (больших и маленьких) и цифр попросту не хватит (нужны математики для точного подсчета).

Вероятно, придется возвращаться к варианту усечения хэша для достижения нужной его длины...

siv1987
На сайте с 02.04.2009
Offline
427
#26

slavegirl, http://stackoverflow.com/questions/7695450/how-to-program-hex2bin-in-javascript


function hex2bin(hex){
var i = 0, l = hex.length - 1, bytes = [];
for (i; i < l; i += 2){
bytes.push(parseInt(hex.substr(i, 2), 16));
}
return String.fromCharCode.apply(String, bytes);
}

function bin2hex(bin){
var i = 0, l = bin.length, chr, hex = '';
for (i; i < l; ++i){
chr = bin.charCodeAt(i).toString(16);
hex += chr.length < 2 ? '0' + chr : chr;
}
return hex;
}


function md5(Text, Raw){
....
temp = temp.toLowerCase().toString(16);
return (Raw) ? hex2bin(temp) : temp;
}
slavegirl
На сайте с 25.06.2012
Offline
388
#27

siv1987, огромнейшее Вам спасибо! Получилось именно то, что мне нужно было: строка из 16 символов.

beginerx
На сайте с 13.07.2009
Offline
173
#28

а почему файл хранения текстовый, ява-скрипт вроде бы умеет работать с бинарными...

>>>Скорость и Реакция<<< (https://vk.com/app4629907 ): онлайн тренировка скорости и времени реакции.... (https://vk.com/app4612117 )... (https://vk.com/club18740762 ).
slavegirl
На сайте с 25.06.2012
Offline
388
#29

beginerx, насколько мне известно, Javascript не умеет работать с файлами вообще (разве что с помощью ActiveX, но в моем случае это лишнее). Данные в файл сохраняет/считывает iMacros, под управлением Javascript.

beginerx
На сайте с 13.07.2009
Offline
173
#30

похоже вы динозавр из 20 века :), В 21 веке давно уже много лет как умеет! без всяких актив иксов и тд. На мозилу орг сколько лет не заглядывали? Я уж не говорю про оперу-хром-сафари раздел для девелоперов. Там такие чудеса дивные вытровряют, что и не каждый С# C++ одолеет! :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий