婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python實現希爾密碼加密的示例代碼

python實現希爾密碼加密的示例代碼

熱門標簽:百應電話機器人總部 成都呼叫中心外呼系統哪家強 西青語音電銷機器人哪家好 旅游廁所地圖標注怎么弄 宿州電話機器人哪家好 南昌地圖標注 無錫智能外呼系統好用嗎 電梯新時達系統外呼顯示e 地圖標注與注銷

原理

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

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

實現

希爾密碼是運用基本矩陣論原理的替換密碼,使用一個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]  #將明文分組轉換為向量形式
mat_c = [a * i % 26 for i in mat_m]  #得到密文分組的向量形式
num_c = []
temp = []
for i in mat_c:  #將密文向量轉換為列表形式,且合并到一個列表
    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實現希爾密碼加密的示例代碼的文章就介紹到這了,更多相關python 希爾密碼加密內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用python實現希爾、計數、基數基礎排序的代碼
  • Python排序搜索基本算法之希爾排序實例分析
  • Python實現希爾排序算法的原理與用法實例分析
  • python編程實現希爾排序
  • python實現的希爾排序算法實例

標簽:濰坊 許昌 贛州 西安 渭南 辛集 雅安 七臺河

巨人網絡通訊聲明:本文標題《python實現希爾密碼加密的示例代碼》,本文關鍵詞  python,實現,希爾,密碼,加密,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python實現希爾密碼加密的示例代碼》相關的同類信息!
  • 本頁收集關于python實現希爾密碼加密的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 安新县| 永昌县| 江陵县| 保康县| 叶城县| 靖西县| 于都县| 凌源市| 扎赉特旗| 巴东县| 阿拉善右旗| 会泽县| 高邑县| 阿巴嘎旗| 长宁县| 宁明县| 保山市| 咸宁市| 鹤山市| 分宜县| 碌曲县| 财经| 涪陵区| 阿鲁科尔沁旗| 连城县| 余干县| 阿瓦提县| 东兴市| 仪征市| 全南县| 肇庆市| 咸宁市| 黑水县| 宁乡县| 卓资县| 眉山市| 德兴市| 鹤峰县| 吉木萨尔县| 湘西| 台江县|