天天看點

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)

前言

正在學習資訊安全數學基礎這門課程。

程式設計實作模重複平方計算法。

先介紹一下模重複平方算法

一、模重複平方算法

圖檔來自大學MOOC陳恭亮老師的視訊中,稍有模糊。。。

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)
資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)

下面我們用C語言來實作這個算法。我們可以思考一下,這個算法一共可以分為幾個小部分?

首先,我們需要一個十進制轉化為二進制的函數,主要用于将指數轉化為二進制形式;

我們還需要知道,我們的循環計算需要執行多少次,是以我們需要一個函數來确定指數的位數;

最後一個函數就是我們的模重複平方計算函數了。當然我們還可以來定義一個列印函數。

廢話不多說,上代碼!!!

上代碼!

第一道習題,成功。

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)

第二道習題,成功。

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)

下面我們再用JAVA來實作第二種計算方法(這種是我們老師講的,比較好了解)

首先還是将指數轉化為二進制的形式,需要注意的是,第一次初始化,用底數乘1。當二進制的高位為1時,将底數平方再乘上底數,當元素為0時,隻平方即可。

我們舉個例子吧,如下圖所示。

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)

上JAVA代碼!

程式執行結果截圖:

資訊安全數學基礎——模重複平方計算法(兩種方法實作C+JAVA)