如何进行简单的Python加密

时间:2013-11-03 23:38:30

标签: python python-2.7 encryption

代码:

a=26
b=25
c=24
d=23
e=22
f=21
g=20
h=19
i=18
j=17
k=16
l=15
m=14
n=13
o=12
p=11
q=10
r=9
s=8
t=7
u=6
v=5
w=4
x=3
y=2
z=1
print ("Please print string:")
str1 = str(raw_input(">"))
print str1

但是如何将str1转换为上面的整数呢?顺便说一句,我是一个新手。

3 个答案:

答案 0 :(得分:2)

因为我很无聊,所以只有一个班轮:

print ''.join([str(123-ord(l))for l in str(raw_input("Print String:\n>"))])

然而,这可能更符合您的要求:

print ("Please print string:")
str1 = str(raw_input(">"))

offset = 1
values = [ord(l) + offset for l in str1]

print ''.join([chr(v) for v in values])

这会使字符串中每个字母的ascii值列表被加密常量偏移,然后将它们转换回字符(现在为偏移量)并将列表连接成字符串。

或以函数形式:

print ("Please print string:")
str1 = str(raw_input(">"))

def encrypt(string,offset):
    return ''.join([chr(ord(l) + offset) for l in string])

print encrypt(str1,2)

然后,您可以对任何字符串调用encrypt并将其偏移所需的值。在您的偏移值被取消(1转到-1等)的情况下调用加密以解密它。

答案 1 :(得分:0)

显然,我无法使用内置string.translate执行此操作,但以下2个工作正常。

import string
# Construct a dictionary for required translation
translation = {}
for index, char in enumerate(string.ascii_lowercase):
    translation[char] = 26 - index

# Function to translate given string
def translate(user_string):
    return "".join([str(translation[c]) for c in user_string])

user_string = raw_input("Enter your string - ")
print translate(user_string)

注意 - string.ascii_lowercase提供'abcdefghijklmnopqrstuvwxyz'

如果您不想将翻译转换为字符串,则可以执行

from __future__ import print_function
import string

translation = {}
for index, char in enumerate(string.ascii_lowercase):
    translation[char] = 26 - index

user_string = raw_input("Enter your string - ")
for c in user_string:
    print(translation[c],end="")

答案 2 :(得分:0)

问题已经得到解答,但一般来说,如果你仍然想要使用你编写的代码,你会想要使用字典:

letters = {"a": 26, "b": 25...}
return ''.join([letters[item] for item in str(raw_input("Print String:\n>"))])