Государственным стандартом шифрования в России является алгоритм, зарегистрированный как ГОСТ 2814789. Он является блочным шифром, то есть шифрует не отдельные символы, а 64битные блоки. В алгоритме предусмотрено 32 цикла преобразования данных с 256битным ключом, за счет этого он очень надежен (обладает высокой криптостойкостью). На современных компьютерах раскрытие этого шифра “методом грубой силы” займет не менее сотен лет, что делает такую атаку бессмысленной. В США используется аналогичный блочный шифр AES.
В Интернете популярен алгоритм RSA, названный так по начальным буквам фамилий его авторов — Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Это алгоритм с открытым ключом, стойкость которого основана на использовании свойств простых чисел. Для его взлома нужно разложить очень большое число на простые сомножители. Эту задачу сейчас умеют решать только перебором вариантов. Поскольку количество вариантов огромно, для раскрытия шифра требуется много лет работы современных компьютеров.
В 2009 году группа ученых из разных стран в результате многомесячных расчетов на сотнях компьютеров смогла расшифровать сообщение, зашифрованное алгоритмом RSA с 768битным ключом. Поэтому сейчас надежными считаются ключи с длиной 1024 бита и более. Однако, если будет построен работающий квантовый компьютер, взлом алгоритма RSA будет возможен за очень небольшое время.
При использовании симметричных шифров всегда возникает проблема: как передать ключ, если канал связи ненадежный? Ведь, получив ключ, противник сможет расшифровать все дальнейшие сообщения. Для алгоритма RSA этой проблемы нет, сторонам достаточно обменяться открытыми ключами, которые можно показывать всем желающим.
У алгоритма RSA есть еще одно достоинство: его можно использовать для цифровой подписи сообщений. Цифровая подпись — это набор символов, который получен в результате шифрования сообщения с помощью личного секретного кода отправителя. Отправитель может передать вместе с исходным сообщением такое же сообщение, зашифрованное с помощью своего секретного ключа (это и есть цифровая подпись). Получатель расшифровывает цифровую подпись с помощью открытого ключа. Если она совпала с незашифрованным сообщением, можно быть уверенным, что его отправил тот человек, который знает секретный код. Если сообщение было изменено при передаче, оно не совпадет с расшифрованной цифровой подписью. Так как сообщение может быть очень длинным, для сокращения объема передаваемых данных чаще всего шифруется не все сообщение, а только его хэшкод.