離散對數問題

2021-05-12 20:43:26 字數 618 閱讀 9612

離散對數公鑰加密演算法是目前最為熱門的公鑰加密演算法 ,其安全性要遠遠高於基於大數分解的rsa演算法。

離散對數問題可以描述為:給定乙個質數p,和有限域zp上的乙個本原元a,對zp上整數b,尋找唯一的整數c,使得a^c≡b(mod p)。一般的,如果仔細選擇p,則認為該問題是難解的,且目前還沒有找到計算離散對數問題的多項式時間演算法。為了抵抗已知的攻擊,p至少應該是150位的十進位制整數,且p-1至少有乙個大的素數因子。

下面是乙個使用離散對數的例子:

alice和bob首先商議好p的值,本例假設為p=2579,則本原元為a=2。

假設alice要傳送訊息x=1299給bob,則

1)bob選擇隨機數r=765作為自己的私鑰,計算q=2^r mod p=2^756 mod 2579=949,作為公鑰給alice;

2)alice選擇隨機數k=853,計算y=2^k mod p=2^853 mod 2579=435,作為公鑰給bob;

3)alice計算密文e=x*q%k mod p=1299*949^853 mod 2579=2396,並傳遞給bob;

4)bob接收到密文後,計算x=e*(y^r)^(-1) mod p=2396*(435^765)^(-1) mod 2579=1299,從而得到原文。

離散對數問題與求本原根的問題

離散對數問題是指給出底數,給出結果,求指數困難。而求本原根的問題是指給出指數,給出結果,求底數困難。之前總覺得這跟上面的離散對數問題是一樣的,仔細想想確實有很大差距,我覺得離散對數問題可能更多用來簽名吧,而求本原根的困難問題就來設計加密。但是如果數的分解問題能夠解決,這樣在部分情況下就能找到求解本原...

生日攻擊實現離散對數問題的求解 C

生日攻擊是個概率性問題,以下 可能只能實現部分離散對數求解問題,通過修改隨機數種子可能會解決不同的問題 birthdayattack.cpp 定義控制台應用程式的入口點。生日攻擊 include stdafx.h include include include using namespace std...

利用pandas對資料離散化

在實際的工作場景中,我們經常會遇到這樣一種場景 想要將某些字段進行離散化即分桶,簡單來說就是講年齡分成幾個區間。pandas中的cut方法能很好地完成此操作。匯入相關庫,並建立資料集 import pandas as pd import numpy as np index pd.index data...