使用 OpenSSL 生成的 RSA 私钥文件(如`prikey.pem`)可以用于加密和解密数据

embedded/2025/3/17 11:33:41/

使用 OpenSSL 生成的 RSA 私钥文件(如prikey.pem)可以用于加密和解密数据。以下是一个完整的示例,展示如何使用 OpenSSL 命令行工具和私钥文件对数据进行加密和解密。

1.生成私钥和公钥

首先,生成一个 RSA 私钥文件prikey.pem,并从中提取公钥文件pubkey.pem

生成私钥

openssl genrsa -out prikey.pem 1024

提取公钥

openssl rsa -in prikey.pem -pubout -out pubkey.pem

2.使用公钥加密数据

假设你有一个需要加密的文件plaintext.txt,你可以使用公钥对其进行加密。

创建一个明文文件

echo "This is a secret message" > plaintext.txt

使用公钥加密

openssl rsautl -encrypt -pubin -inkey pubkey.pem -in plaintext.txt -out encrypted.bin

这将生成一个加密后的二进制文件encrypted.bin

3.使用私钥解密数据

使用私钥对加密后的数据进行解密。

使用私钥解密

openssl rsautl -decrypt -inkey prikey.pem -in encrypted.bin -out decrypted.txt

这将生成一个解密后的文件decrypted.txt

4.验证解密结果

检查解密后的文件内容是否与原始明文相同。

cat decrypted.txt

输出应为:

This is a secret message

完整示例代码

以下是一个完整的示例脚本,展示如何生成密钥对、加密和解密数据:

# 生成私钥
openssl genrsa -out prikey.pem 1024# 提取公钥
openssl rsa -in prikey.pem -pubout -out pubkey.pem# 创建明文文件
echo "This is a secret message" > plaintext.txt# 使用公钥加密
openssl rsautl -encrypt -pubin -inkey pubkey.pem -in plaintext.txt -out encrypted.bin# 使用私钥解密
openssl rsautl -decrypt -inkey prikey.pem -in encrypted.bin -out decrypted.txt# 验证解密结果
cat decrypted.txt

运行上述脚本后,你将看到decrypted.txt文件的内容与原始明文相同。


注意事项

• 密钥长度:建议使用更高的密钥长度(如 2048 或 4096 位)以提高安全性。

• 数据大小限制:RSA 加密对数据大小有限制,通常不超过密钥长度。对于大文件,建议使用对称加密(如 AES)结合 RSA 加密。

• 安全性:私钥文件(prikey.pem)应妥善保管,避免泄露。

通过上述步骤,你可以使用 OpenSSL 和 RSA 密钥对数据进行加密和解密。


http://www.ppmy.cn/embedded/173338.html

相关文章

RAG数据嵌入和重排序:如何选择合适的模型

RAG数据嵌入和重排序:如何选择合适的模型 在自然语言处理(NLP)领域,Retrieval-Augmented Generation(RAG)模型已经成为一种强大的工具,用于结合检索和生成能力来处理复杂的语言任务。RAG模型的…

【DevOps】Backstage介绍及如何在Azure Kubernetes Service上进行部署

【DevOps】Backstage介绍及如何在Azure Kubernetes Service上进行部署 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【DevOps】Backstage介绍及如何在Azure Kubernetes Service上…

C/C++:内存分区,内存分配

一、内存分布图 直接上图分析 向下增长的栈:栈顶指针(SP)从高地址向低地址移动; 向上增长的栈:栈顶指针(SP)从底地址向高地址移动。 验证代码(linux平台下测试,这个…

单机DeepSeek做PPT,YYDS!

今天同事问我 AI 能不能做 PPT,有个述职报告要做,问我能不能帮忙,这时我脑海中的第一画面就是 DeepSeek Kimi DeepSeek 擅长逻辑构建与内容生成,其深度思考能力当前测试下来,不愧为国内No.1,而且还会把中间…

Spark Sql 简单校验的实现

在网上参考了很多资料,都是要依赖Sparksession,这个需要spark环境,非常不友好,jdk版本也不好控制。不使用Sparksession获取上下文,利用spark和antlr的静态方法使用java 实现简单的spark sql 的语法以及内置函数的校验。…

【AIGC】OpenAI 集成 Langchain 操作实战使用详解

目录 一、前言 二、前置准备 2.1 安装 Langchain必须的依赖 2.1.1 python环境 2.1.2 langchain openai 环境 2.1.3 准备一个apikey 2.1.4 langchain 核心组件 三、Langchain 各组件使用 3.1 Chat models组件 3.1.1 Invocation 使用 3.1.1.1 结果解析 3.2 提示词模板…

97.HarmonyOS NEXT跑马灯组件教程:基础概念与架构设计

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT跑马灯组件教程:基础概念与架构设计 1. 跑马灯组件概述 跑马灯(Marquee)是一种常见的UI组件&a…

操作系统八股文整理(一)

操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤: 二、线程切换线程切换的步骤: 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…