基于boost库的加密算法

本文介绍了基于Boost库的RSA加密算法,包括对称加密和非对称加密的概念,详细阐述了RSA加密的数学基础,如互质关系、欧拉函数和快速幂取模运算。还讲解了密钥的产生过程,以及如何利用Boost的大数库解决大数运算问题,以增强RSA的安全性。
摘要由CSDN通过智能技术生成

基于boost库的RSA加密算法

简介

RSA加密算法是一种公开密钥加密体制中的一种加密算法,它通过两个不同的密钥进行加密和解密。一个是公开密钥,一个是私有秘钥。
在使用的过程中通过密钥对未加密的内容(明文)加密之后变成密文,只有通过另一个专属的密钥进行解密,将密文还原成明文。

对称加密和非对称加密

  1. 对称加密
    加密和解密使用的都是同一个密钥。
  2. 非对称加密
    加密和解密需要使用不同的密钥。
    (1)、A生成两把密钥(公钥和私钥)。公钥是公开的,所有人都可以使用它来进行加密,而私钥是保密的。
    (2)、B获取了A的公钥之后,并使用它来对信息进行加密。
    (3)、A得到加密后的信息,使用私钥进行解密操作,获取原文。
    而作为解密的工具,只要私钥不被泄露,AB双方的通信就是安全的,就算截获了信息,也无法破解出原文。

加密方式

公钥加密(E,N):密文 = 明文 ^ E % N;
私钥解密(D,N):明文 = 密文 ^ D % N;

数学基础

互质关系

如果两个正整数,除了1之外没有其他的公因子,那么就称这两个数是互质关系。比如25和30。
对于互质关系有以下结论:
  1. 任意两个质数是互质关系。比如3和7。
  2. 一个数是质数,和另一个数不成倍数关系,两个数 就构成了互质。比如3和16。
  3. 1和任意的一个自然数都是互质关系。
  4. a是大于1的任意整数,则a和a-1构成互质关系。如15和14.
  5. a是大于1的奇数,则a和a-2是互质关系,如11和13.

欧拉函数

小于x的正整数中与x互质的的数的数目。(下图中a1,a2^……an是x的所有质因数,x是不为0的整数)在这里插入图片描述
特性如下:
1.如果n是质数,则φ(n) = n -1;
2.如果m和n是互质的,则φ(mn) = φ(m) * φ(n);
3.如果m和n都是质数,则φ(mn) = φ(m - 1) * (n - 1)。
欧拉定理: 如果m和n互质,则m^φ(n) % n = 1
模反元素: 又称逆元,如果m和n互质,则可以找一个正整数d,满足m * d % n = 1

密钥产生过程

当数学基础满足的时候,就可以得到两个钥匙的产生过程。
1、选择两个不相等的质数a,b,得N= ab;
2、计算φ(N),选择一个1<E<φ(N),且满足E和φ(N)互质,得到公钥 (E,N)
3、计算逆元D,通过逆元获取私钥 (D,N) ,其中D最小值可以取φ(N)/E。
在这里插入图片描述
如下例:
在这里插入图片描述
具体证明过程可以在这里进行观看和验算。
有了公钥和私钥之后就可以对信息进行加密,由于加密和解密都是属于模幂运算,所以就需要进行快速幂取模运算。

快速幂取模运算

同余定理

在这里插入图片描述

快速幂算法:

通过这个算法可以减少幂运算的次数,具体原因见下图:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值