4、RSA终端指令

news/2024/11/6 13:46:44/

RSA总结

  • 加密算法,都是数学知识
  • 对称加密(传统加密算法)
  • RSA(三个人的名字)非对称加密(现代加密算法)
    • 原根
    • 欧拉函数、欧拉定理(费马小定理)
    • 模反元素
      • m^(e * d) mod n  ≡ m
    • 迪菲赫尔曼密钥交换
  • RSA算法
    • RSA: 拆解两个(大)质数的乘积很难!所以RSA想对安全.
    • 加密: M ^e % N = C
    • 解密: C ^ d % N = M
    • 明文 : M; 密文: C ;
    • 公钥: N和E
    • 私钥: N和d
    • 条件(总共有六个数字)
      • N是由两个很大的质数(P1、P2)相乘得到! 为了方便求出φ(N).
      • D是E(65537)相对于φ(N)的模反元素

1.1 RSA的特点

  • RSA的安全系数非常高(因为整个业务逻辑非常安全)
  • 加密效率非常低(不能做大数据加密)
  • 用来加密关键数据

1.2 终端演示

  • Mac的终端可以直接使用OpenSSL进行RSA的命令运行
  • OpenSSL中RSA算法常用指令主要有三个:

命令

含义

genrsa

生成并输入一个RSA私钥

rsautl / pkeyutl

使用RSA密钥进行加密、解密、签名和验证等运算, pkeyutl公钥解密时需要签名

rsa

处理RSA密钥的格式转换等问题

  • 生成RSA私钥,密钥长度为1024bit

openssl genrsa -out private.pem 1024

  • 从私钥中提取公钥

openssl rsa -in private.pem -pubout -out public.pem

  • 生成的文件如下

  • 将私钥转换成为明文并打开

openssl rsa -in private.pem -text -out private.txt && open private.txt writing RSA key

    • 查看文本信息也可以使用

cat private.txt

  • 通过公钥加密数据,私钥解密数据
//生成明文文件
$ vi message.txt 
//查看自己输入的文件内容 
$ cat message.txt 
密码是: 654321 
//通过公钥进行加密 
$ openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt 
//查看加密后的文本 
$ cat enc.txt Df;�cb�<t��uU�w�̝@P��F�+�^"�d��t��Ʌf�&O��:�[�8D���+�`�N$�sL�n�LKk �e�KSTXId��Ԅ�)'��]�����y��'h�6�֒;cl;/�T������ 
//通过私钥进行解密 
$ openssl pkeyutl -decrypt -in enc.txt -inkey private.pem -out dec.txt 
//查看解密后的密文 
$ cat dec.txt 
密码是: 654321 %
  • 通过私钥加密数据,公钥解密数据
//通过私钥进行加密 
$ openssl pkeyutl -sign -in message.txt -inkey private.pem -out enc.txt 
$ cat enc.txt 
P�ƕ|_]}lӭ׈ČP����Ǎ(+�i��#�P���~{�+����G;ػP�b�?~L�z^�)��MX'`)ƛ�h�0�o�� ��6A~6��R���G U�y܏2�)���|#wCg�A4a�% 
//通过公钥进行解密 
$ openssl pkeyutl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt 
pkeyutl: No signature file specified for verify 
$ openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt 
The command rsautl was deprecated in version 3.0. Use 'pkeyutl' instead.
$ cat dec.txt 
密码是: 654321

 


http://www.ppmy.cn/news/50185.html

相关文章

java: web应用中不经意的内存泄露

前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑&#xff0c;今天无意发现如果使用不当&#xff0c;很容易引起内存泄露&#xff0c;测试代码如下&#xff1a; 1、定义一个类App package com.cnblogs.yjmyzz.web.controller;import java.util.Date;public cla…

【数据挖掘】5分钟带你了解文本向量化的常见方式

5分钟带你了解文本向量化的常见方式 1. 独特编码模型2. 词袋模型3. TF-IDF模型4. N-gram模型5. Word2Vec模型参考资料文本向量化:将文本信息表示成能够表达文本语义的向量,是 用数值向量来表示文本的语义。 词嵌入(Word Embedding):一种将文本中的词转换成数字向量的方法,…

Elasticsearch REST API 文档管理

文章目录 创建文档路径参数常用查询参数示例响应说明 查询文档路径参数编辑查询参数示例 1响应说明示例2示例3 更新文档路径参数查询参数示例1示例2禁用noop mget 获取多个文档路径参数查询参数请求正文参数说明示例1响应结果示例2 删除文档路径参数查询参数示例1 开放式并发控…

Redis7

Redis之父安特雷兹 Redis7概述 Redis:Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高性能的Key-Value数据库提供了丰富的数据结构&#xff0c;例如String、Hash、List、Set、SortedSet等等。数据是存在内…

docker离线部署 升级

其它版本linux内核系统或许略有不同 下载docker版本包 https://download.docker.com/linux/static/stable/x86_64/centos部署版本 上传到服务器目录下&#xff0c;解压文件。 tar -xvf docker-XXXXXX.tgz将解压出来的docker文件内容移动到 /usr/bin/ 目录下&#xff0c;该命…

FE_CSS 常见布局技巧

1 巧妙运用浮动元素不会压住文字的特性 float: left; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta ht…

java中的锁

java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够。于是再次翻看了一下书里的内容,突然有点打开脑门的感觉。看来确实是要学习的最好方式是要带着问题去学,并且解决问题。 在java中锁主要两类:内部锁synchronized…

网络通信基础 - 多路复用技术(频分多路复用、时分多路复用、波分多路复用)

文章目录 1 概述1.1 复用器 MUX 2 分类2.1 频分多路复用 FDM2.2 时分多路复用 TDM2.3 波分多路复用 WDM 1 概述 1.1 复用器 MUX 多路复用技术&#xff1a;把多个低速信道组合成一个高速信道的技术这种技术要用到两个设备&#xff0c;统称为 多路器&#xff08;MUX&#xff09…