日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

密钥交换算法: 迪菲-赫尔曼算法

發布時間:2024/8/23 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密钥交换算法: 迪菲-赫尔曼算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

迪菲-赫爾曼算法用于通信雙方交換密鑰. 還記得之前介紹HTTPS協議的時候, 提到需要先通過對方公鑰來進行密鑰的交換, 然后再通過密鑰對通信內容進行加密. 迪菲-赫爾曼算法就是用于交換密鑰的. . 此算法與非對稱加密算法不同哦.

OK, 一起來看看吧.

引入

在正式介紹迪菲-赫爾曼算法之前, 先簡單跟我思考下面場景.

現場有你, 小王和小李三個人, 你和小王之間需要建立一個共享密鑰, 但是, 你們不能交頭接耳, 你們之間說的話小李都能聽到. 那么, 有什么辦法能夠建立共享密鑰而不讓小李知道呢? 現在開始, 跟著思路走一下.

我們假設以下的計算只有乘法沒有除法, 即乘法是不可逆的(這里為了簡單說明, 在后面會出現真正不可逆的函數)

第一步

你和小王都在心里默默的選擇一個只有自己知道的數字, 比如: 你選了8, 小王選了3.

第二步

小王宣布一個公共數字, 當然, 這個數字也是他選的. 這個數字就暫定是5.

第三步

你和小王分別用私人數字與公共數字相乘, 得到新的私人-公共數字

第四步

你和小王分別將對方的 私人-公共數字 與自己的私人數字相乘, 得到的結果就是你們之間的共享密鑰:?120.

最終來判斷一下, 在這個過程中, 小李有沒有可能拿到這個共享密鑰: 120. 小李知道的所有信息是, 公共數字7以及你們的 私人-公共數字. (別忘了我們的假設, 沒有除法). 顯然, 僅憑乘法是得不出的.

那么現在問題來了, 這個不可逆的算法在哪?他在哪???

正式應用

他來了, 他來了, 他來了. 這個不可逆的算法來了.

有這樣的一種運算, 將一個數字與n取模得出最終的數, 被稱為鐘運算. 想象一下一個時鐘, 13點就是1點. 嗯, 就是這樣.

計算一個指數并將結果與鐘的大小取模, 這個過程就是下面的計算了. 例如, 如果鐘的大小是12, 基數是2, 則計算公式是: 2^8%12=256%12=4.

問題, 只告訴你數字12, 2和4, 你能算出數字8么? 不能, 因為可能性太多了. 簡單窮舉一下:

  • 2^2%12 => 4
  • 2^3%12 => 8
  • 2^4%12 => 4
  • 2^5%12 => 8
  • 2^6%12 => 4

能看得出來很多哈. 重復一下上面的交換步驟, 開始嘗試建立公共密鑰

第一步

選擇自己的私人數字.

第二步

公布公共數字, 這里公共數字需要兩個, 一個數字是鐘的大小, 一個數字是求冪的基數.

第三步

雙方公布自己計算后的數字

第四步

混合得到共享密鑰. 將對方的 公共-私人數字 為基數, 自己的私人數字為指數, 計算并和鐘大小取模, 得出最終的共享密鑰

OK, 至此, 密鑰交換成功. 當然, 通過窮舉的方法還是可以得到共享密鑰. 例子中的數字為方便計算, 都很小. 但是, 現實使用中, 鐘大小如果有幾百位的數字呢?

對于數字的選擇有個小小的限制:

  • 鐘大小的選擇必須是一個素數(我也不知道為啥).

  • 上面選取的基數2, 只能取到鐘上的數字4和8. 現實中基數一般選取鐘大小的本原根(我也不知道為啥叫這名). 比如2是11的本原根.(2^1%11 ... 2^10%11 的值分別為: 2,4,8,5,10,9,7,3,6,1. 涵蓋了11的所有值. )

  • 對了, 這個計算規則叫做離散對數, 名字不重要, 知道怎么回事就行了.

    以上...

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的密钥交换算法: 迪菲-赫尔曼算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。