工具文

RSA加密原理

2021-04-13  本文已影响0人  木扬音

什么是RSA加密

RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。公钥加密--私钥解密,私钥加密--公钥解密

RSA数学原理

离散对数问题

整数中,离散对数是一种基于同余运算和原根的一种对数运算。而在实数中对数的定义 logba是指对于给定的ab,有一个数x,使得bx=a。相同地在任何群G中可为所有整数k定义一个幂数为bK,而离散对数logba是指使得bK=a的整数k

当3为17的原根时,我们会发现一个规律

当3为17的原根

欧拉函数

正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。有以下几个特点

欧拉定理

根据欧拉定理进行下面公式转换
公式转化 公式2验证 公式3验证

迪菲赫尔曼密钥交换

服务端根据生成一个随机数15,根据315mod17计算出6,服务端将6传递给客户端,客户端生成一个随机数13,根据313mod17计算出12后,将12再传回给服务端,客户端收到服务端传递的6后,根据613mod17计算出10,服务端收到客户端传递的12后,根据1215mod17计算出10,我们会发现我们通过迪菲赫尔曼密钥交换10进行了加密传递

迪菲赫尔曼密钥交换 迪菲赫尔曼密钥交换原理

RSA原理

RSA原理

说明:

安全性:
除了公钥用到ne,其余的4个数字是不公开的(p1、p2、φ(n)、d)
目前破解RSA得到的方式如下:

缺点
RSA加密效率不高,因为是纯粹的数学算法,大数据不适合RSA加密,所以我们在加密大数据的时候,我们先用对称加密算法加密大数据得到KEY,然后再用RSA加密KEY,再把大数据和KEY一起进行传递

OpenSSL进行RSA加密

因为Mac系统内置了OpenSSL(开源加密库),所以我们开源直接在终端进行RSA加密解密

常用命令

生成私钥

生成RSA私钥,密钥名为private.pem,密钥长度为1024bit

openssl genrsa -out private.pem 1024
openssl genrsa
private.pem
从私钥中提取公钥
openssl rsa -in private.pem -pubout -out public.pem
openssl rsa public.pem
将private.pem私钥转化成明文形式
openssl rsa -in private.pem -text -out private.txt
private.pem转成明文 private.pem的明文
通过公钥加密数据
openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out exc.txt
公钥加密数据
通过私钥解密数据
openssl rsautl -decrypt -in exc.txt -inkey private.pem -out dec.txt
私钥解密数据
通过私钥加密数据
openssl rsautl -sign -in message.txt -inkey private.pem -out enc.txt
私钥加密数据
通过公钥解密数据
openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt
公钥解密数据

因为在iOS中是无法使用.pem文件进行加密和解密的,需要进行下面几个步骤

私钥签名(没有认证的)

.csr文件
openssl req -new -key private.pem -out rsacert.csr
私钥签名
crt证书

生成一个10年期限的crt证书

openssl x509 -req -day
s 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
crt证书
der证书

crt证书格式转换成der证书

openssl x509 -outform der -in rsacert.crt -out rsacert.der
der证书
p12证书
openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
p12证书
上一篇 下一篇

猜你喜欢

热点阅读