|
一段对换位加密算法解密的程序,具体代码附在后面。
正常在shell 中执行的正确结果
分开在shell中的执行结果
程序代码
程序代码
程序执行后显示:RESTART
程序执行后显示: RESTART
代码如下:
import math
def main():
myMessage = 'Cenoonommstmme oo smnio. s s c'
myKey = 8
plaintext = decryptMessage( myKey, myMessage )
# Print with a | ( called "pipe" character ) after it in case
# there are spaces at the end of the decrypted message.
print( plaintext + '|' )
def decryptMessage( key, message ):
# The transposition decrypt function will simulate the "columns" and "rows" of the grid that the plaintext is written on by using a list of strings. First, we need to calculate a few values.
# The number of "columns" in our transposition grid:
numOfColumns = math.ceil( len(message) / key )
# The number of "rows"
numOfRows = key
# The number of "ShadeBoxes"
numOfShadeBoxes = ( numOfColumns * numOfRows ) - len(message)
# Each string in plaintext represents a column in the grid.
plaintext = [''] * numOfColumns
# The col and row varibles point to where in the grid the next character in the encrypted message will go.
col = 0
row = 0
for symbol in message:
plaintext[col] += symbol
col += 1 # point to nest column
# If there are no more columns or we're at a shaded box, go back to the first column and the next row.
if( (col == numOfColumns) or ( ( col == numOfColumns - 1 ) and ( row >= numOfRows - numOfShadeBoxes ) ) ):
col = 0
row += 1
return ''.join( plaintext )
# If transpositionDecrypt.py is run( instead of imported as a module ) call the main() function.
if __name__ == '__main__ ':
main()
|
|