Вычисление МD5-свертки строки

августа 8, 2008

Алгоритм MD5 вырабатывает 128-разрядный цифровой отпечаток или дайджест сообщения произвольной длины. Это модификация свертки, т.е. функция шифрования односторонняя, так что восстановить первоначальное сообщение по дайджесту невозможно. Для Ruby имеется расширение, реализующее MD5; интересующиеся могут заметить его в каталоге ext/md5 стандартного дистрибутива. Ради творчества нового мира MD5 есть 2 эквивалентных метода класса:
require ‘md5′
hash = MD5.md5
hash = [...]

Читать далее →

Вычисление 32-разрядного CRC

августа 8, 2008

Контрольный код циклической избыточности (Cyclic Redundancy Checksum,CRC) — прекрасно славный путь получить «сигнатуру» файла или произвольного массива байтов. CRC отличается тем свойством, что возможность получения одинакового кода для различных входных данных равна 1 /2**N, где N- число битов результата (наиболее часто 32).
Вычислить его разрешает библиотека zlib, написанная Уэно Кацухиро (Ueno Каtsuhiro). Метод сгс32 вычисляет CRC [...]

Читать далее →

Генерирование последовательности строк

августа 8, 2008

Иногда бывает необходимо принять «следующую» строку. Так, следующей для строки “ааа” будет строка “aab” (потом “aac”, “aad” и так далее). В Ruby для этой задачи есть способ succ:
droid = “R2D2″
inproved = droid.succ # “R2D3″
pill = “Vitamin B”
pill2 = pill.succ # “Vitamin C”
He рекомендуется использовать данный метод, в случае, если точно не известно, что первоначальное значение [...]

Читать далее →

Печать специальных символов

августа 8, 2008

Метод dump позволяет произвести графическое изображение символов, которые постоянно не печатаются совсем или вызывают побочные результаты:
# Добавлено три символа ASCII BEL.
# Печатается: Вниманиё\007\007\007
# Печатается: abc\t\tdef\tghi\n\n
si = “Внимание” « 7 « 7 « 7
pats si.dump
s2 = “abc\t\tdef\tghi\n\n”
pets s2.dump
s3 = “Двойная кавычка: \””
puts s3.dump # Печатается: Двойная кавычка: \”
При стандартном значении переменной $KCODE метод dump дает такой [...]

Читать далее →

Удаление заданных символов

августа 8, 2008

Метод delete удаляет из строки те символы, которые включены в перечень, передаваемый в качестве размера:
si = “To be, or not to be”
s2 = si.delete (”b”) ii “To e, or not to e”
s3 = “Veni, vidi, vici!”
s4 = s3.delete(”,!”) # “Veni vidi vici”
Данный параметр идет тем же правилам, что и параметр метода count, т.е. допускаются символы [...]

Читать далее →

Удаление дубликатов

августа 8, 2008

Цепочки повторяющихся флагов можно сжать до одного методом squeeze:
si = “bookkeeper”
s2 = si.squeeze # “bokeper”
s3 = “Hello… ”
s4 = s3.squeeze # “Helo.”
В случае, если указан параметр, то будут выходить только дубликаты заданных в нем символов:
s5 = s3.squeeze(”.”) # “Hello.”
Данный параметр идет тем же правилам, что и параметр метода count, т.е. допускаются дефис и символ ^.
Имеется [...]

Читать далее →

Обращение строки

августа 8, 2008

Для обращения строк служит метод reverse (или его вариант для обращения «на месте» reverse!):
si = “Star Trek”
s2 = si. reverse if “kerT ratS”
si.reverse! S si теперь равно “kerT ratS”
Пусть требуется изменить порядок выступлений (а не символов). Тогда можно снова воспользоваться методом stringSsplit, который отдаст массив слов. В клас
Array тоже есть способ reverse, затем можно обратить [...]

Читать далее →

Подсчет числа символов в строке

августа 8, 2008

Метод count подсчитывает число вхождений в строку символов из заданного набора:
si = “abracadabra”
b = si.count (”Mr”) # 5
Строковый параметр ведет себя как простое регулярное выражение. Если он
начинается с символа Л, то берется дополнение к списку:
с = sl.count(,/4a”) # 6
d = sl.count(””bdr”) #6
Дефис обозначает диапазон символов:
е = sl.count(”a-d”) # 9
f = si.count(”Ла-Д”) # 2
2.28. Подсчет числа [...]

Читать далее →

Сжатие строк

августа 8, 2008

Ради сокращения строк и файлов используется библиотека zlib.
Зачем может уйти сжимать строки? Очевидно, чтобы ускорить ввод/
вывод из базы данных, оптимизировать применение сети или усложнить распознавание строк.
В классах Deflate и Inflate существуют способы класса deflate и inflate соответственно.
У метода deflate (он выполняет сжатие) ест.Ь дополнительный параметр,
задающий режим сжатия. Он определяет компромисс между свойством сжатия и
скоростью. В [...]

Читать далее →

Шифрование строк

августа 8, 2008

Порой нежелательно, чтобы линии можно было нетрудно распознать. К примеру,пароли не нужно хранить в чистом виде, какими бы ограничительными ни были права прохода к файлу.
В стандартном методе crypt существует стандартная функция с тем же именем для шифрования строки по алгоритму DES. Она принимает в качестве размера «затравку» (ее назначение то же, что у затравки генератора [...]

Читать далее →