自动秘钥密码(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_}")













目录
相关文章
|
JSON 算法 Java
常见登录密码加密方式
常见登录密码加密方式
1098 0
|
前端开发 算法 数据安全/隐私保护
在前端对登录密码进行加密,md5+盐值
在前端对登录密码进行加密,md5+盐值
552 0
|
2月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
57 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
5月前
|
网络安全 开发工具 git
|
5月前
|
安全 Linux 网络安全
ssh中的密码登录和密钥登录
ssh中的密码登录和密钥登录
|
7月前
|
存储 运维 Nacos
nacos常见问题之连接用户名和密码把明文用户名和密码进行加密如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
1521 2
|
存储 安全 数据库
浅谈密码加密
浅谈密码加密
|
算法 数据安全/隐私保护
什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?
什么叫明文,什么叫密文、密码、密钥,为什么在数据库里不采用明文保存密码?
389 0
|
网络安全 开发工具 数据安全/隐私保护
通过密钥登录远程服务器
通过密钥登录远程服务器
|
存储 网络安全 数据库
关于用户密码加密
关于用户密码加密
72 1