Взлом Ceasar cipher — различия между версиями
Материал из InformationSecurity WIKI
								
												
				ComAT0Zz (обсуждение | вклад)  (Новая страница: «Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте замен…»)  | 
				ComAT0Zz (обсуждение | вклад)   | 
				||
| Строка 1: | Строка 1: | ||
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.  | Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.  | ||
| − | Взлом данного шифра происходит методом перебора   | + | Взлом данного шифра происходит методом перебора всех возможных сдвигов. Для этого можно использовать инструмент [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript Automatic Caesar cipher breaker] либо код на python, в котором строка '''Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj''' является зашифрованной:  | 
| + | |||
| + |    a = 'Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj'  | ||
| + |    import string  | ||
| + |    def rotn(n):  | ||
| + |        from string import ascii_lowercase as lc, ascii_uppercase as uc  | ||
| + |        mapping = string.maketrans(lc + uc, lc[n:] + lc[:n] + uc[n:] + uc[:n])  | ||
| + |        return mapping  | ||
| + |    for n in xrange(26):  | ||
| + |       a.translate(rotn(n))  | ||
Версия 13:01, 8 февраля 2016
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.
Взлом данного шифра происходит методом перебора всех возможных сдвигов. Для этого можно использовать инструмент Automatic Caesar cipher breaker либо код на python, в котором строка Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj является зашифрованной:
  a = 'Wkh_Txlfn_Eurzq_Ira_Mxpsv_Ryhu_Wkh_Odcb_Grj'
  import string
  def rotn(n):
      from string import ascii_lowercase as lc, ascii_uppercase as uc
      mapping = string.maketrans(lc + uc, lc[n:] + lc[:n] + uc[n:] + uc[:n])
      return mapping
  for n in xrange(26):
     a.translate(rotn(n))