最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)希爾密碼加密的示例代碼

 更新時間:2021年08月12日 15:27:26   作者:lnjoy  
本文主要介紹了python實現(xiàn)希爾密碼加密,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

原理

希爾密碼是運用基本矩陣論原理的替換密碼,由Lester S. Hill在1929年發(fā)明。

每個字母當作26進制數(shù)字:A=0, B=1, C=2… 一串字母當成n維向量,跟一個n×n的矩陣相乘,再將得出的結(jié)果模26。(注意用作加密的矩陣(即密匙)在 必須是可逆的,否則就不可能解碼。只有矩陣的行列式和26互質(zhì),才是可逆的。)

實現(xiàn)

希爾密碼是運用基本矩陣論原理的替換密碼,使用一個m*m的矩陣作為密鑰,此矩陣必須可逆,解密使用逆矩陣解密。

  • 加密: 密文向量 = 密鑰矩陣 * 明文向量 (mod 26)
  • 解密:明文向量 = 密鑰矩陣逆矩陣 * 密文向量 (mod 26)

使用numpy庫的矩陣對象,可以十分方便地進行矩陣乘法,矩陣求逆和取模等運算。

import numpy as np

m = 'YOURPINNOISFOURONETWOSIX'  #明文
a = np.matrix([[11,2,19],[5,23,25],[20,7,17]])  #密鑰LCTFXZUHR
num_m = []
temp = []
count = 1
for i in m:  #將明文分為三個一組
    temp.append(ord(i)-ord('A'))
    if count % 3 == 0:
        num_m.append(temp)
        temp = []
    count += 1
mat_m = [np.matrix(i).T for i in num_m]  #將明文分組轉(zhuǎn)換為向量形式
mat_c = [a * i % 26 for i in mat_m]  #得到密文分組的向量形式
num_c = []
temp = []
for i in mat_c:  #將密文向量轉(zhuǎn)換為列表形式,且合并到一個列表
    temp = i.tolist()
    for j in range(3):
        num_c.append(temp[j][0])
c = [chr(i+ord('A')) for i in num_c]
print(''.join(c))  #連接成字符串,輸出密文

到此這篇關于python實現(xiàn)希爾密碼加密的示例代碼的文章就介紹到這了,更多相關python 希爾密碼加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

安国市| 台山市| 涿鹿县| 郓城县| 都兰县| 海淀区| 横山县| 屯门区| 教育| 鹤峰县| 延安市| 湟中县| 新晃| 略阳县| 蕲春县| 谷城县| 六安市| 徐汇区| 司法| 共和县| 司法| 县级市| 衡南县| 界首市| 华亭县| 泰来县| 新和县| 松溪县| 濉溪县| 昌邑市| 北川| 普陀区| 青阳县| 资兴市| 中江县| 图木舒克市| 从化市| 邛崃市| 景泰县| 永嘉县| 托克托县|