2013-12-11 2 views
-2

Может ли кто-нибудь сказать мне имя этого шифра, пожалуйста?Может ли кто-нибудь сказать мне имя этого шифра, пожалуйста?

Я знаю, что это простой шифр замещения, я просто не знаю его имени.

Cipher Key:

help 

Cipher алфавит:

Текст:

this is a test 

Cipher текст:

tdfs fs h tast 
+5

Этот вопрос, как представляется, не по теме, поскольку речь идет о криптографии и не включает в себя задачу программирования. –

+0

Если он еще не был назван, я подтверждаю его «Люцифер». –

+0

Я бы сказал, что это вариация шифрования Цезаря, но шифр Цезаря не использует такой ключ. – Chris

ответ

1

Разве это не просто substitution cipher? Вы только что переместили 4 буквы «помощи» на передний план и сдвинули все остальные буквы вправо.

EDIT

Вот реализация в питона в качестве упражнения в лямбда, itertools и звездочкой (*) аргументы, и тратить время (и, возможно, чтобы спасти то, что может быть интересное обсуждение по кодированию шифры в Python):

import string 
from itertools import izip, count, starmap 

def cipher(s,key): 
    # characters you want to translate, e.g. 
    # 'abcd ... xyz ' 
    raw = string.ascii_lowercase + ' ' 

    # cipher with your key, e.g. 
    # 'helpabcdfgi...z ' 
    sub = key + string.translate(raw, None, key) 

    # create a dictionary from a character to an index 
    # in the original raw value string 
    m = dict(izip(raw, count())) 

    # looks up the index in the map using: starmap(m.get, s) 
    # then gets the substitution character: map(lambda i:sub[i], ...) 
    # and joins them together 
    return ''.join(map(lambda i:sub[i], starmap(m.get, s))) 

И некоторые тестовый код для проверки его работы:

ins = 'this is a test' 
outs = cipher(ins, "help") 

print ins,' -> ',outs 

exp = "tdfs fs h tast" 
if exp == outs: 
    print "pass :)" 
else: 
    print "~~ FAIL ~~", " expected ", exp 

Выход:

D:\temp>cipher.py 
this is a test -> tdfs fs h tast 
pass :) 
+0

Да, короче говоря, это просто простой шифр замещения (я бы сказал, вариация цезарного шифра), но поскольку это использует ключ, я хотел бы знать, действительно ли оно имеет имя. – Chris

0

Я думаю, что нашел ответ. Вариант Цезаря, шифр замещения «Смешанный алфавит».

Простые да, но добавить мор сложности вы можете поместить его в блок, как это (становится смесью смешанного алфавита и полиалфавитных):

|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 
------------------------------------------------------ 
1|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z 
2|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h 
3|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e 
4|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l 
5|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p 
6|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a 
7|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b 
8|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c 
9|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d 
10|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f 
11|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g 
12|j|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I 
13|k|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j 
14|m|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k 
15|n|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m 
16|o|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n 
17|q|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o 
18|r|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q 
19|s|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r 
20|t|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s 
21|u|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t 
22|v|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u 
23|w|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v 
24|x|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w 
25|y|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x 
26|z|h|e|l|p|a|b|c|d|f|g|I|j|k|m|n|o|q|r|s|t|u|v|w|x|y 

Это позволило бы более варианта Vigenere Шифра, а чем вариант Цезарного шифра.

Тем не менее с помощью ключа:

help 

же сообщение:

this is a test 

бы стать:

tfiv kx c hkep 

Другой уровень сложности было бы сгруппировать буквы или все вместе или в блоки:

tfivkxchkep 

или блокированные (3 символов):

tfi 
vkx 
chk 
epz 

    With an extra z added to make up the missing character. 
Смежные вопросы