所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
当加密为两组时,把将要传递的信息中的字母交替排成上下两行。
再将下面一行字母排在上面一行的后边,从而形成一段密码。
例如:
在实际应用当中可以将该加密方式分成更多组,或者与其他加密方式组合使用。
[rail_fence_cipher.py]{..\src\ciphers\rail_fence_cipher.py}
"""
Prepare
1. sys.path 中增加 TheAlgorithms\src 子模块
"""
import sys
sys.path.append(‘E:\dev\AI\TheAlgorithms\src‘)
encrypt(
input_string: str,
key: int)
-> str:
decrypt(
input_string: str,
key: int)
-> str:
bruteforce(
input_string: str)
-> dict[int, str]
from ciphers.rail_fence_cipher import encrypt,decrypt
# ,bruteforce
"""
"""
print(encrypt("Hello World", 4)) # ‘HWe olordll‘
print(decrypt("HWe olordll", 4)) # ‘Hello World‘
"""
Uses decrypt function by guessing every key
"""
# print(bruteforce("HWe olordll")[4]) # ‘Hello World‘
HWe olordll
Hello World
‘\n Uses decrypt function by guessing every key\n‘
原文:https://www.cnblogs.com/it88-laobing/p/14925284.html