天天看点

信息安全数学基础——模重复平方计算法(两种方法实现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)