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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【信息安全】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;
    }
}
相关文章
|
21天前
|
算法 安全 Go
Go 语言中实现 RSA 加解密、签名验证算法
随着互联网的发展,安全需求日益增长。非对称加密算法RSA成为密码学中的重要代表。本文介绍如何使用Go语言和[forgoer/openssl](https://github.com/forgoer/openssl)库简化RSA加解密操作,包括秘钥生成、加解密及签名验证。该库还支持AES、DES等常用算法,安装简便,代码示例清晰易懂。
56 12
|
4月前
|
安全 算法 网络安全
浅谈非对称加密(RSA)
浅谈非对称加密(RSA)
203 0
|
3月前
|
算法 安全 Go
RSA加密算法详解与Python和Go实现
RSA加密算法详解与Python和Go实现
275 1
|
3月前
|
算法 安全 网络安全
使用 Python 实现 RSA 加密
使用 Python 实现 RSA 加密
151 2
|
3月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
247 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
4月前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
171 8
|
4月前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
164 5
|
4月前
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【9月更文挑战第11天】在数字时代,数据安全至关重要。AES与RSA加密技术相结合,构成了一道坚固防线。AES以其高效性保障数据加密,而RSA则确保密钥安全传输,二者相辅相成,提供双重保护。本文通过Python代码示例展示了这一加密方案的魅力,强调了其在实际应用中的重要性和安全性。使用HTTPS等安全协议传输加密密钥和密文,确保数据在数字世界中自由流通而无忧。
99 1
|
4月前
|
安全 算法 数据安全/隐私保护
黑客克星!Python加密艺术大公开,AES、RSA双剑合璧,守护你的数字世界
在这个数据泛滥的时代,数字世界既充满了知识,也潜藏安全隐患。Python 作为强大的编程语言,以其独特的加密技术为我们的信息安全保驾护航。本文将介绍 AES 和 RSA 这两种加密算法,揭示它们如何协同工作,保护你的数字世界。AES(高级加密标准)以其高效、安全著称,能将敏感信息转化为难以破解的乱码。Python 的 `pycryptodome` 库让 AES 加密变得简单易行。然而,AES 面临密钥分发难题,此时 RSA(非对称加密算法)便大显身手,通过公钥加密、私钥解密的方式确保密钥传输安全。AES 与 RSA 在 Python 中交织成一道坚不可摧的防护网,共同守护我们的数字世界。
101 0
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。