Разве это не просто 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 :)
Этот вопрос, как представляется, не по теме, поскольку речь идет о криптографии и не включает в себя задачу программирования. –
Если он еще не был назван, я подтверждаю его «Люцифер». –
Я бы сказал, что это вариация шифрования Цезаря, но шифр Цезаря не использует такой ключ. – Chris