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

Python實現(xiàn)ElGamal加密算法的示例代碼

 更新時間:2020年06月19日 11:01:49   作者:出門左拐是海  
ElGamal加密算法是一個基于迪菲-赫爾曼密鑰交換的非對稱加密算法。這篇文章通過示例代碼給大家介紹Python實現(xiàn)ElGamal加密算法的相關(guān)知識,感興趣的朋友一起看看吧

在密碼學中,ElGamal加密算法是一個基于迪菲-赫爾曼密鑰交換的非對稱加密算法。它在1985年由塔希爾·蓋莫爾提出。GnuPG和PGP等很多密碼學系統(tǒng)中都應(yīng)用到了ElGamal算法。

ElGamal加密算法可以定義在任何循環(huán)群G上。它的安全性取決于G上的離散對數(shù)難題。

使用Python實現(xiàn)ElGamal加密算法,完成加密解密過程,明文使用的是125位數(shù)字(1000比特)。

代碼如下:

import random
from math import pow
a = random.randint(2, 10) #產(chǎn)生小于p的隨機常數(shù)a

def gcd(a, b):
  if a < b:
    return gcd(b, a)
  elif a % b == 0:
    return b;
  else:
    return gcd(b, a % b)
  # Generating large random numbers

def gen_key(q):
  key = random.randint(pow(10, 20), q)
  while gcd(q, key) != 1:
    key = random.randint(pow(10, 20), q)
  return key

# Modular exponentiation
def power(a, b, c):
  x = 1
  y = a
  while b > 0:
    if b % 2 == 0:
      x = (x * y) % c;
    y = (y * y) % c
    b = int(b / 2)
  return x % c

# Asymmetric encryption
def encrypt(msg, p, h, r):
  en_msg = []
  b = gen_key(p) # 得b
  K = power(h, b, p)#K=(Sa)^b mod p
  C1 = power(r, b, p) #C1=Sb=r^b mod p
  for i in range(0, len(msg)):
    en_msg.append(msg[i])
  print("C1 : ", C1)
  # print("(Sa)^b mod p used : ", K)
  for i in range(0, len(en_msg)):
    en_msg[i] = K * ord(en_msg[i])
  print("C2 : ", en_msg)
  return en_msg, C1

def decrypt(C2, C1, a, p):
  dr_msg = []
  h = power(C1, a, p)
  for i in range(0, len(C2)):
    dr_msg.append(chr(int(C2[i] / h)))
  return dr_msg

# Driver code
def main():
  msg = '01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234'        # 共125位數(shù)字,1000bit
  print("明文 :", msg)
  p = random.randint(pow(10, 20), pow(10, 50))# 獲得大素數(shù)q
  r = random.randint(2, p)#得r
  a = gen_key(p) # Private key for receiver
  h = power(r, a, p)
  C2, C1 = encrypt(msg, p, h, r)
  dr_msg = decrypt(C2, C1, a, p)
  dmsg = ''.join(dr_msg)
  print("解密后文 :", dmsg);

if __name__ == '__main__':
  main()

總結(jié)

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

相關(guān)文章

  • Python?jieba分詞添加自定義詞和去除不需要長尾詞的操作方法

    Python?jieba分詞添加自定義詞和去除不需要長尾詞的操作方法

    這篇文章主要介紹了Python?jieba分詞如何添加自定義詞和去除不需要長尾詞,主要介紹jieba的基礎(chǔ)用法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Django+python服務(wù)器部署與環(huán)境部署教程詳解

    Django+python服務(wù)器部署與環(huán)境部署教程詳解

    這篇文章主要介紹了Django+python服務(wù)器部署與環(huán)境部署教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Django Admin后臺添加數(shù)據(jù)庫視圖過程解析

    Django Admin后臺添加數(shù)據(jù)庫視圖過程解析

    這篇文章主要介紹了Django Admin后臺添加數(shù)據(jù)庫視圖過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 基于Python編寫一個簡單的http服務(wù)器

    基于Python編寫一個簡單的http服務(wù)器

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個簡單的http服務(wù)器,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-04-04
  • Python中Thop庫的基本用例和參數(shù)說明

    Python中Thop庫的基本用例和參數(shù)說明

    這篇文章主要給大家介紹了關(guān)于Python中Thop庫的基本用例和參數(shù)說明的相關(guān)資料,THOP是PyTorch非常實用的一個第三方庫,可以統(tǒng)計模型的 FLOPs 和參數(shù)量,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Python抓取網(wǎng)頁圖片難點分析

    Python抓取網(wǎng)頁圖片難點分析

    沒想到python是如此強大,令人著迷,以前看見圖片總是一張一張復(fù)制粘貼,現(xiàn)在好了,學會python就可以用程序?qū)⒁粡垙垐D片,保存下來。今天網(wǎng)上沖浪看到很多美圖,可是圖片有點多,不想一張一張地復(fù)制粘貼,怎么辦呢?辦法總是有的,即便沒有我們也可以創(chuàng)造一個辦法
    2023-01-01
  • Python實現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】

    Python實現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】

    這篇文章主要介紹了Python實現(xiàn)鏈表反轉(zhuǎn)的方法,結(jié)合實例形式分析了Python迭代法與遞歸法實現(xiàn)鏈表反轉(zhuǎn)的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-02-02
  • Python中的super()方法使用簡介

    Python中的super()方法使用簡介

    這篇文章主要介紹了Python中的super()方法的使用,是Python入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • pandas 表連接的具體實現(xiàn)

    pandas 表連接的具體實現(xiàn)

    在Pandas中使用merge()函數(shù)可以實現(xiàn)類似于SQL的連接操作,包括左連接、右連接、內(nèi)連接和外連接,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • python抓取百度首頁的方法

    python抓取百度首頁的方法

    這篇文章主要介紹了python抓取百度首頁的方法,涉及Python使用urllib模塊實現(xiàn)頁面抓取的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評論

蛟河市| 佛冈县| 甘孜| 视频| 贞丰县| 霍林郭勒市| 平泉县| 咸阳市| 子洲县| 龙岩市| 张北县| 南乐县| 龙口市| 丰顺县| 曲阜市| 当阳市| 富蕴县| 丽江市| 襄汾县| 鸡泽县| 漳浦县| 临泉县| 通州区| 雅安市| 惠州市| 庄浪县| 永和县| 定日县| 宁明县| 南皮县| 鄂州市| 小金县| 大城县| 龙州县| 盘山县| 孝昌县| 息烽县| 两当县| 延寿县| 邢台县| 普格县|