实现Atbash密码

实现Atbash密码

阿特巴什密码是一种替代密码,在这种密码中,我们可以在一个密码钥匙的帮助下,将所有字母的顺序颠倒过来。我们可以将A-Z的顺序改为Z-A。它被用来将字母表编码成希伯来字母表。

与Affine的关系

Atbash密码是Affine密码的一部分,在其中使用了两个密钥。在Affine密码中,a=25,b=25。

算法

Atibash密码中使用的密钥如下。

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

加密

为了加密信息,我们需要从上面的字母中选择一个词。然后,我们必须用下面的字母替换该字母。假设我们有一个词 “JAVATPOINT”,这个词的第一个字母是J,可以用Q代替,第二个字母是A,可以用Z代替,这个词的第三个字母是V,可以用E代替,字母T可以用G代替,字母P可以用L代替,字母O可以用M代替,字母I可以用R代替。字母N可以用M代替。整个信息可以被加密如下。

JAVATPOINT
QZEZGKLRMG

解密

同样,如果我们想解密 “QZEZGKLRMG “的信息,可以按照上述步骤进行。字母Q可以用J代替,字母Z可以用A代替,字母E可以用V代替,字母G可以用T代替,字母K可以用P代替,字母L可以用O代替,字母R可以用I代替,字母M可以用N代替,整个信息可以被解密如下。

QZEZGKLRMG
JAVATPOINT

方法

在这里,我们可以在密钥值的帮助下对每个元素进行映射操作。它在字典中寻找这一对,在上述系列的帮助下,加密和解密过程就发生了。

示例:

# Python program to implement Atbash Cipher
# This script uses dictionaries to lookup various alphabets
lookup_table = {'A' : 'Z', 'B' : 'Y', 'C' : 'X', 'D' : 'W', 'E' : 'V',
        'F' : 'U', 'G' : 'T', 'H' : 'S', 'I' : 'R', 'J' : 'Q',
        'K' : 'P', 'L' : 'O', 'M' : 'N', 'N' : 'M', 'O' : 'L',
        'P' : 'K', 'Q' : 'J', 'R' : 'I', 'S' : 'H', 'T' : 'G',
        'U' : 'F', 'V' : 'E', 'W' : 'D', 'X' : 'C', 'Y' : 'B', 'Z' : 'A'}

def atbash(message):
    cipher = ''
    for letter in message:
        # checks for space
        if(letter != ' '):
            #adds the corresponding letter from the lookup_table
            cipher += lookup_table[letter]
        else:
            # adds space
            cipher += ' '

    return cipher

# Driver function to run the program
def main():
    #encrypt the given message
    message = 'JAVATPOINT'
    print(atbash(message.upper()))

    #decrypt the given message
    message = 'QZEZGKLRMG'
    print(atbash(message.upper()))

# Executes the main function
if __name__ == '__main__':
    main()

输出:

QZEZGKLRMG
JAVATPOINT

Atbash密码的优点

Atbash密码同时具有a=25和b=25。所以我们不需要为加密和解密写不同的函数。因此,我们可以在加密和解密中重复使用同一个函数。

它有一个恒定的密钥,是最容易被破解的密码,几乎不提供任何安全性。任何人都可以认为它是Atbash,并通过颠倒字母来解密信息。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程