背景知识
章节大纲
-
RSA 算法涉及大整数的计算。这些计算不能直接使用简单的算术运算符,因为这些运算符只能对原始数据类型(例如 32 位整数和 64 位长整数类型)进行运算。RSA 算法中涉及的数字通常长于 512 位。对于两个 32 位整数 a 和 b ,我们只需要在程序中使用 a * b。但是,如果数很大,我们就不能再这样做了,我们需要使用算法来计算其乘积。有几个函数库可以实现对任意大小的整数执行算术运算。在本实验中,我们将使用 Openssl 提供的 Big Number 库。要使用此库,我们将每个大数定义为 BIGNUM 类型,然后使用该库提供的 API 进行各种操作,例如加法,乘法,乘幂,模运算等。关于 API 的使用和示例在下面的资源里给出。编译。我们可以使用下面的命令来编译 bn_sample.c (- 后面的字符是字母 l,不是数字 1。它告诉编译器使用 crypto 库):
$ gcc bn_sample.c -lcrypto