非对称加密的日常实践应用:以RSA加密为例

简介: **RSA加密简介与Python实现**RSA,一种非对称加密技术,基于大数因子分解,用于数据加密和完整性保护。本文介绍了RSA基本原理,包括密钥生成(选取大质数p和q,计算n和φ(n),选择公钥指数e和私钥指数d),并展示了使用Python `cryptography` 库生成密钥对、加密和解密消息的代码示例。通过这些步骤,读者可理解RSA在网络安全中的应用,如HTTPS和数字签名。

引言

非对称加密技术,特别是RSA加密算法,在现代互联网安全中扮演着至关重要的角色。从HTTPS通信到软件签名,再到加密货币的交易验证,RSA加密无处不在,确保了数据的机密性和完整性。本篇文章将深入浅出地介绍RSA加密的基本原理,并通过Python代码示例展示其在日常应用中的简单实践。

RSA加密基础

RSA加密算法以其发明者Rivest、Shamir和Adleman的名字命名,是一种基于大数因子分解难题的非对称加密技术。它涉及到一对密钥:公钥用于加密,可以公开分享;私钥用于解密,必须保密保存。

1. 密钥生成

RSA密钥对生成包括以下步骤:

  • 选择两个大质数p和q。
  • 计算n = p * q,作为模数。
  • 计算欧拉函数φ(n) = (p-1)*(q-1)。
  • 选取一个小于φ(n)且与φ(n)互质的整数e作为公钥指数。
  • 计算d,使得 e * d ≡ 1 (mod φ(n)),d即为私钥指数。

Python实现RSA密钥生成

首先,我们使用Python的cryptography库来生成RSA密钥对。

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend

# 生成RSA密钥对
def generate_rsa_key_pair():
    key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048,
        backend=default_backend()
    )
    private_key = key.private_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PrivateFormat.PKCS8,
        encryption_algorithm=serialization.NoEncryption()
    )
    public_key = key.public_key().public_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PublicFormat.SubjectPublicKeyInfo
    )
    return private_key, public_key

private_key, public_key = generate_rsa_key_pair()
print("Private Key:\n", private_key.decode())
print("\nPublic Key:\n", public_key.decode())

应用实践:加密与解密

2. 加密

使用接收方的公钥对消息进行加密,确保只有拥有对应私钥的接收方能够解密。

from cryptography.hazmat.primitives import padding
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes

def encrypt_message(message, public_key):
    recipient_key = serialization.load_pem_public_key(
        public_key,
        backend=default_backend()
    )
    cipher = Cipher(algorithms.RSA(recipient_key), modes.OAEP(
        mgf=algorithms.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    ), backend=default_backend())
    encryptor = cipher.encryptor()
    ciphertext = encryptor.update(message.encode('utf-8')) + encryptor.finalize()
    return ciphertext

message = "This is a secret message."
encrypted = encrypt_message(message, public_key)
print("Encrypted Message:", encrypted)

3. 解密

接收方使用自己的私钥解密消息。

def decrypt_message(encrypted, private_key):
    private_key = serialization.load_pem_private_key(
        private_key,
        password=None,
        backend=default_backend()
    )
    cipher = Cipher(algorithms.RSA(private_key), modes.OAEP(
        mgf=algorithms.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    ), backend=default_backend())
    decryptor = cipher.decryptor()
    decrypted = decryptor.update(encrypted) + decryptor.finalize()
    return decrypted.decode('utf-8')

decrypted_message = decrypt_message(encrypted, private_key)
print("Decrypted Message:", decrypted_message)

结语

通过上述Python代码示例,我们不仅理解了RSA加密的基本流程,还亲手实现了从密钥生成到信息加密解密的全过程。在日常应用中,RSA加密常被用于安全的数据传输、数字签名以及身份验证等场景,是构建安全互联网服务不可或缺的技术之一。掌握其原理与应用,对于开发者而言,是提升系统安全性的关键一步。

目录
相关文章
|
8月前
|
Java 数据安全/隐私保护
对称加密、非对称加密与哈希摘要
本内容介绍了对称加密、非对称加密和哈希摘要的基本概念与区别。对称加密使用同一密钥加解密,速度快但需妥善保管密钥;非对称加密使用公钥加密、私钥解密,安全性高但速度较慢;哈希摘要通过提取数据特征用于完整性校验,能有效区分不同数据。
260 2
|
9月前
|
数据安全/隐私保护
解释对称加密、非对称加密、哈希摘要
加密技术分为对称加密与非对称加密。对称加密使用同一密钥进行加解密,速度快但需严保管密钥;非对称加密则用公钥加密、私钥解密,安全性高但速度较慢。哈希摘要用于验证数据完整性,代表原始数据特征。
242 0
|
8月前
|
存储 关系型数据库 MySQL
MYSQL数据加密压缩函数应用实战指南。
总的来说,加密和压缩是维护MySQL数据库中数据安全性和效率的有效手段。使用时需权衡性能与安全,合理应用加密和压缩函数。在设计数据库架构时要考虑到加密字段的查询性能,因为加密可能使得一些索引失效。压缩数据能有效减少存储空间的占用,但在服务器负载较高时应避免实时压缩和解压,以免影响总体性能。
240 10
|
7月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
8月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1363 10
|
9月前
|
存储 安全 数据处理
探讨对称加密与非对称加密的区别
综上所述,对称加密和非对称加密的选用取决于不同的安全需求、性能考量和应用情境。了解各自的特点和限制,才能有效地部署合理的加密策略,以确保数据通信的安全性和效率。
1062 13
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密