К основному контенту

расшифровка шифра Цезаря

(*расшифровка шифра Цезаря*)
let secret = "li bra ghflskhu wklv dqg bra nqrz lw, fods brxu kdqgv"
let keys = [ for i in 'a'..'z' -> i]
let size = keys |> List.length

let slice a =
    let (h::t) = a
    t @ [h] 
let decode (word:string) (code:char list) =
    for x = 0 to word.Length - 1 do
         let f = List.tryFindIndex (fun e -> word.[x] = e) keys
         match f with
         | Some c ->  printf "%c" (code.[c])   
         | None -> printf "%c" (word.[x]) 

let rec loop (word:string) (code:char list) count =
    match count with
    | _ when count > keys.Length -> ()
    | _ 
        -> 
        printfn "\ntry number %d" count
        let cipher = slice code
        decode word cipher
        loop word cipher (count + 1)


printfn "decoding Cezar's cipher  %s ...\n" secret

loop secret (slice keys) 0

printfn "\n" 
 
 
Запускаем:
 
try number 20
he xnw cdbhogdq sghr zmc xnw jmnv hs, bkzo xntq gzmcr
try number 21
if yox decipher this and yox know it, clap your hands
try number 22 

Суть шифра в сдвиге алфавита на определенное количество символов.

Комментарии

  1. Все моноалфавитные шрифты легко взламываются, применять их на практике для шифрования не имеет смысла

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

Кирилица в Arch Linux

После вчерашних обновлений в консоли Arch Linux при выборе русской локали вместо букв печатаются белые квадратики. Очевидно, что по какой-то причине не загружается прописанный в rc.conf шрифт. Временное лекарство от этого: выполнить команду setfont cyr-sun16 . Еще у меня в момент начальной загрузки появляется рябь на экране как от сильных электромагнитных помех в ЭЛТ, хотя у меня ЖК. Может быть это как-то связано.

Сортировка массивов в groovy

Любой массив в java и groovy можно отсортировать статическим методом: Arrays.sort(c); причем это будет очень быстро сто тысяч элементов типа int сортируются за 1 секунду на celeron M 1,8 Mg. Если это массив объектов можно использовать перегруженный метод Arrays.sort(c,comporator);

Arch Linux - руссификация консоли

Вчера, придя с работы, как всегда затеял InstallFest. Уже практически не задумываясь установил свежий арч. И тут заметил что в tty вместо русского - квадратики. Под утро нашел таки сообщение на форме, что в этом виноваты дрова от видео. Там правда речь шла о нвидиа, а у меня ати. Буду пробовать. И еще в lxterminal обратил внимание что сообщения на русском, а то что я вводил на русском потом возвращается системой в виде юникод-символов. Вот такие дела. UPDATE: драйвер не причем. переустановил в консоли(до установки X) по прежнему квадратики вместо букв. неужели придется переключатся на инглиш? Заметил что initscripts скачался c какого-то зеркала не с яндекса. возможно причина в нем.