Практический криптоанализ: дилетант и афинные шифры
Дело было вечером. Но делать было чего.
Возьмем некоторый текст и зашифруем его. А шифровать-то чем? Афинными шифрами конечно. Они-то самые простые. Залезем в педивикию и посмотрим, что это за зверь. В множество афинных шифров входит атбаш и шифр цезаря.
Не будем сильно усложнять и возмем атбаш. Благо у него самый простой алфавит замены.
Исходный текст:
abcdefghijklmnopqrstuvwxyz
Зашифрованный текст:
ZYXWVUTSRQPONMLKJIHGFEDCBA
И константы a и b равны соотвестенно 25. Почему так - хорошо показано в вики.
Но сейчас не об этом. Шифровать мы будем Стругацких: “Полдень XXII Век” на английском. Шифроваться ьудет только текст. Без html-разметки.
А после шифрования мы потеряем ключ и попробуем раскодировать.
RxJS: oneInTime
```javascript; gutter: true; first-line: 1; highlight: [] Rx.Observable.prototype.oneInTime = function (delay) { return this .take(1) .merge(Rx.Observable.empty().delay(delay)) .repeat(); };
необходимые модули:
rx.js rx.binding.js rx.time.js ```
Подсчет вхождений слов в файле
```shell; gutter: true; first-line: 1; highlight: [] #!/bin/bash if [-f $1] then for word in $(grep -o -i -E ‘(^|b)S(b|$)’ $1|sort -u -f | grep -o -i -E ‘w’ | sort -u -f) do word_stat=$(grep -o -i -E “(^|\W)$word($|\W)” $1 |wc -l) echo ““$word” $word_stat” done; fi;
```shell; gutter: true; first-line: 1; highlight: []
$ ./wordstat.sh text.txt "a" 2578 "a2" 1 "Aaaugh" 2 "abandon" 2 "abandoned" 5 "abandonment" 1 "Aber" 2 "abilities" 1 "ability" 7 "able" 5 <cut>
Сгенерировать латинский алфавит
```shell; gutter: true; first-line: 1; highlight: [] $ echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z
```shell; gutter: true; first-line: 1; highlight: []
$ printf "%sn" {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z
shell; gutter: true; first-line: 1; highlight: []
$ for i in $(echo {a..z});do echo $i;done a b c d e f g h i j k l m n o p q r s t u v w x y z
Подсчет количества вхождений регэкспа в файле
shell; gutter: true; first-line: 1; highlight: []
$ grep -o -e 'S' text.txt |wc -l 513274