【信息安全】RSA非对称加密算法原理(详解和C++代码实现)

简介: 【信息安全】RSA非对称加密算法原理(详解和C++代码实现)

1.RSA非对称加密

(1)选择两个素数p和q ,计算n=p*q和欧拉函数φ(n)=(p-1)(q-1),选择整数e,使gcd(φ(n), e)=1(即φ(n)和e是互素),1<e<φ(n);

(2)计算e的逆元d=e-1mod φ(n)(即ed = 1 mod φ(n));

(3)得到公钥Kpub={e, n},私钥Kpri={d, n}(公开公钥Kpub ,保密私钥Kpri );

(4)加密(使用公钥Kpub):对于明文m<n,密文c=me mod n ;

(5)解密(使用私钥Kpri):对于密文c,明文m=cd mod n

2.RSA加解密示例
image.png

3.代码实现(c++)

#include <iostream>
using namespace std;

// 最大公因数
int maxCommonDivisor(int a, int b)
{
    int temp = a;
    if (a < b)
    {
        a = b;
        b = temp;
    }

    while(a % b)
    {
        temp = b;
        b = a % b;
        a = temp;
    }
    return b;
}

// 最小公倍数
int leastCommonMultiple(int a, int b)
{
    int macDivisor = maxCommonDivisor(a, b);
    return a / macDivisor  *  b;
}

// 计算 input ^ rate mod y
int multiMod(int input, int rate, int y)
{
    int start = 1;
    int arr[100];
    arr[0] = 1;
    arr[1] = input;
    int step = 1;
    int result = 1;

    while(rate)
    {
        if (step == 1)
        {
            arr[step] = input;
        }
        else
        {
            arr[step] = arr[step - 1] * arr[step - 1];
            arr[step] %= y;
        }
        if(rate&1)
        {
            result *= arr[step];
            result %= y;
        }
        step ++;
        rate = rate >> 1;
    }

    return result;
}

int main()
{
    int input;
    int p, q;
    int N, L, E, D;

    while(cin >> p >> q >> input >> E)
    {
        N = p * q;
        //最小公倍数
        L = leastCommonMultiple(p - 1, q - 1);
        //E * D mod L = 1
        int X = 1;
        while((X * L + 1) % E)
        {
            X ++;
        }

        D = (X * L + 1) / E;
        cout<<"N = " << N << "  L = " << L << " E = " << E << "  D = " << D << "  X = " << X <<endl;
        // 加密过程
        int code = multiMod(input, E, N);
        // 解密过程
        int deCode = multiMod(code, D, N);
        cout<< "code = " << code << "  deCode = " << deCode << endl;
    }
}
相关文章
|
6月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
579 0
|
6月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
288 8
|
6月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
332 8
|
6月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
302 0
|
6月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
263 0
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
308 10
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
314 10