自动秘钥密码(Autokey)

简介: 自动秘钥密码(Autokey)

自动秘钥密码(Autokey)

  • 加密对象: 字母
  • 原理:
  • 该密码玉维吉尼亚密码很像, 不同的是秘钥的构成方式不同。 维吉尼亚密码密码的秘钥是有关键字的重复构成的,而该密码的秘钥是由关键字和明文本身构成,即前面是关键字,后面是明文。
  • (秘钥=关键字+明文)
  • 查表:取第一个明文字符作为横标,取第一个秘钥(上一步构成的秘钥)字符作为纵标,查找对应字符,在去第二个明文字符作为横标,取第二个秘钥字符作为纵标,查找对应字符,…。最后将所有字符合在一起就构成了密文
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
A 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
B 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 A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C


E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G


I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L


N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q


S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V


X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z 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

  • 代码
# write in 2021/7/13
# 自动秘钥密码
DIC = "abcdefghijklmnopqrstuvwxyz"
def encrypt_autokey(string, key):
    ciphertext = ""
    key += string
    key_index = 0
    for i in string:
        if i not in DIC:
            ciphertext += i
        ciphertext += DIC[(DIC.index(i)+DIC.index(key[key_index])) % 26]
        key_index += 1
    return ciphertext
def decrypt_autokey(string, key):
    plaintext = ""
    key_index = 0
    for i in string:
        if i not in DIC:
            plaintext += i
        char = DIC[(DIC.index(i) - DIC.index(key[key_index])) % 26]
        key += char
        plaintext += char
        key_index += 1
    return plaintext
if __name__ == '__main__':
    key_ = "linux"
    ciphertext_ = encrypt_autokey("autokey", key_)
    plaintext_ = decrypt_autokey(ciphertext_, key_)
    print(f"{plaintext_}: {ciphertext_}")













目录
相关文章
|
7月前
|
JSON 算法 Java
常见登录密码加密方式
常见登录密码加密方式
498 0
|
9月前
|
前端开发 算法 数据安全/隐私保护
在前端对登录密码进行加密,md5+盐值
在前端对登录密码进行加密,md5+盐值
327 0
|
存储 算法 安全
用户密码到底要怎么加密存储?
作为互联网公司的信息安全从业人员经常要处理撞库扫号事件,产生撞库扫号的根本原因是一些企业发生了信息泄露事件,且这些泄露数据未加密或者加密方式比较弱,导致黑客可以还原出原始的用户密码。
647 0
用户密码到底要怎么加密存储?
|
1月前
|
存储 运维 Nacos
nacos常见问题之连接用户名和密码把明文用户名和密码进行加密如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
192 2
|
7月前
|
存储 安全 数据库
浅谈密码加密
浅谈密码加密
|
8月前
|
算法 数据安全/隐私保护
什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?
什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?
236 0
|
10月前
|
网络安全 开发工具 数据安全/隐私保护
通过密钥登录远程服务器
通过密钥登录远程服务器
|
存储 网络安全 数据库
关于用户密码加密
关于用户密码加密
56 1
|
前端开发 PHP 数据安全/隐私保护
laravle对密码验证,密码和重复密码
laravle对密码验证,密码和重复密码
389 0
laravle对密码验证,密码和重复密码