【发布时间】:2011-11-11 01:11:26
【问题描述】:
帮助我正在尝试使用排列作为密钥对文件进行解扰,我知道如何对其进行加扰,但我需要创建一个函数来将其解扰回使用相同排列密钥的内容,这是代码:
def stringtoarray(S):
A = []
i = 0
while i<len(S):
A.append(S[i])
i += 1
return A
def arraytostring(A):
S = ""
for c in A: # "for each element/value c in array A"
S = S+c
return S
#arraytostring
def scramble(S, P): #Scramble string S with permutation P
pn = len(P) # length of permutation array
E = (len(S) + pn - (len(S)%pn)) * [' '] # array of chars, padded
i = 0
while i< len(S):
seg = i/pn # segment number
j = i % pn # segment offset
E[ seg*pn + P[j] ] = S[i]
i += 1
# while
return arraytostring(E)
# scramble
print scramble("0123456789abcdefghij",[9, 14, 11, 19, 16, 18, 12, 6,
7, 15, 0, 5, 17, 4, 3, 10, 2, 1, 8, 13])
# prints ahgedb78i0f26j194c53
我想再次将其设置回字符串“0123456789abcdefghij”
【问题讨论】:
-
您不应该使用它来保护任何东西。我敢肯定这是一个有趣的编程挑战或什么的,在这种情况下你会更有力量。
-
你确定扰码器是正确的吗? E 的长度应该怎么计算?提示:检查
len(E)看看是否正确。你认为seg是什么? (提示:对于您的示例,它始终为零)
标签: python string permutation