Итак, я создал очень ... странный маленький Цезарь, используя python. Очень просто. За исключением того, что я не очень хорош в математике, и мне интересно, как бы я изменил это?
def encrypt(text,s):
result = ""
for i in range(len(text)):
char = text[i]
if (char.isupper()):
result += chr((ord(char) + s - 23+213**3) % 26 + 713)
else:
result += chr((ord(char) + s - 23+213**3) % 26 + 715)
return result
text = input("Message: ")
s = 964
print ("Text: " + text)
print ("Shift: " + str(s))
print ("Cipher: " + encrypt(text,s))
Буду признателен за любую помощь.
Редактировать:
Я ТАК ЗАКРЫТА! Я подсчитал, как работает сдвиг:
, если буква заглавная: 1. 964 - 23+213^3, which ends up as -9662656
2. Get the remainder of that divided by 26 (modulo operator) -9662656 % 26 = 10
3. 10 + 714 = 724
4. 724-63
Я получил 63 только через проб и ошибок ...
ТОЛЬКО ПРОБЛЕМА! Все это работает до буквы М, и в этом случае последние 13 букв сдвигаются назад на 26 символов. Как бы я решил это?
def decrypt(text,s):
result = ""
for i in range(len(text)):
char = text[i]
result += chr((ord(char) - s))
return result
text = input("Message: ")
s = 724-63
print ("Text: " + text)
print ("Shift: " + str(s))
print ("Cipher: " + decrypt(text,s))
Text: ˖˗˘˙˚˛˜˝˞˟ˠˡˢˉˊˋˌˍˎˏːˑ˒˓˔˕
Shift: 661
Cipher: ABCDEFGHIJKLM456789:;<=>?@