我试图用一种特定的方法加密一些明文。给定一个键[4,5,6,7]和明文“This is some plaintext”第一个字母是T键中的第一个数字是4因此T通过向前移动4(T,U,V,W,X)变成X下一个字母是H键是5因此H变成M{H,I,J,K,L,M}
当到达密钥的末尾时,只需从头开始并一直加密直到完成。我有一个Python的基本大纲:
#key = [4,5,12,6,7,11,8,9,1,2,3,10]
key = [4,5,6,7]
letters = ["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"]
plaintext = "IfyouarereadingthisthenthisplanetmayhavehopeafterallYouhavethepowerand"
plaintext = plaintext.upper()
keySpot = 0
count = 0;
keyCount = 0
letterLocation = 0
tempLetter = ""
i = 0
while(count < len(plaintext)):
tempLetter = plaintext[count]
for i in range(0, len(letters)):
if(tempLetter == letters[i]):
letterLocation = i
i = i + 1
if(keyCount > 4):
keyCount = 0
letterLocation = letterLocation + key[keyCount]
keyCount = keyCount + 1
if(letterLocation > 27):
#need some logic here so it wont go out of bounds
print letters[letterLocation]
count = count + 1
我的主要问题是,如果letterLocation在向前移动时太大,并且超过了Z,该怎么办。当它到达Z时,我需要它在A处重新开始,并继续前进直到完成。例如,如果明文字母是Y,密钥是5y,那么Y将变成D{Y,Z,A,B,C,D}
我该怎么做?它可以是爪哇、C、C++、JavaScript或Python,任何最简单的。如果你能想出一个更好的方法,我会采纳你的建议。你知道吗
很简单,只要用一个模:
相关问题 更多 >
编程相关推荐