非对称加密的日常实践应用:以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加密常被用于安全的数据传输、数字签名以及身份验证等场景,是构建安全互联网服务不可或缺的技术之一。掌握其原理与应用,对于开发者而言,是提升系统安全性的关键一步。

目录
相关文章
|
5月前
|
Java 数据安全/隐私保护
对称加密、非对称加密与哈希摘要
本内容介绍了对称加密、非对称加密和哈希摘要的基本概念与区别。对称加密使用同一密钥加解密,速度快但需妥善保管密钥;非对称加密使用公钥加密、私钥解密,安全性高但速度较慢;哈希摘要通过提取数据特征用于完整性校验,能有效区分不同数据。
206 2
|
4月前
|
存储 数据安全/隐私保护
如何将加密和解密函数应用到Pinia状态中?
如何将加密和解密函数应用到Pinia状态中?
287 124
|
6月前
|
数据安全/隐私保护
解释对称加密、非对称加密、哈希摘要
加密技术分为对称加密与非对称加密。对称加密使用同一密钥进行加解密,速度快但需严保管密钥;非对称加密则用公钥加密、私钥解密,安全性高但速度较慢。哈希摘要用于验证数据完整性,代表原始数据特征。
197 0
|
5月前
|
存储 关系型数据库 MySQL
MYSQL数据加密压缩函数应用实战指南。
总的来说,加密和压缩是维护MySQL数据库中数据安全性和效率的有效手段。使用时需权衡性能与安全,合理应用加密和压缩函数。在设计数据库架构时要考虑到加密字段的查询性能,因为加密可能使得一些索引失效。压缩数据能有效减少存储空间的占用,但在服务器负载较高时应避免实时压缩和解压,以免影响总体性能。
196 10
|
4月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
5月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
1142 10
|
6月前
|
存储 安全 数据处理
探讨对称加密与非对称加密的区别
综上所述,对称加密和非对称加密的选用取决于不同的安全需求、性能考量和应用情境。了解各自的特点和限制,才能有效地部署合理的加密策略,以确保数据通信的安全性和效率。
894 13
|
7月前
|
存储 运维 安全
OSS安全合规实战:金融行业敏感数据加密+KMS自动轮转策略(满足等保2.0三级要求)
金融行业OSS面临等保2.0、行业监管及数据泄露三重合规挑战,存在存储加密不足、密钥轮转滞后、访问控制不当等问题。本文提出分层加密架构,结合服务端KMS与客户端加密,设计自动密钥轮转机制,实现高性能与合规兼顾,并提供故障排查与成本优化方案,助力金融机构安全落地OSS应用。
356 1
|
11月前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。