由数学公式:
m^e % n = c 加密
c^d % n = m 解密
私钥不公开,要想破解,必须求出d。
e d = f(n) k + 1
公钥e和n 私钥d和n 明文m 密文c 。
特点:因为要求f(n)…效率低,适合加密小数据。
用途:1、加密Key;2、数字签名
openssl 命令
1、生成私钥private.pem
安全test LDH$ openssl genrsa -out private.pem 1024
2、从私钥中提取公钥
安全test LDH$ openssl rsa -in private.pem -pubout -out public.pem
3、技巧:将base64转成明文
安全test LDH$ openssl rsa -in private.pem -text -out private.txt
4、通过公钥对message.txt字符串加密,输出到enc.txt
安全test LDH$ openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt
5、使用私钥对enc.txt进行解密,输出到dec.txt
安全test LDH$ openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
6、使用私钥对message.txt生成签名文件,输出到enc.bin
安全test LDH$ openssl rsautl -sign -in message.txt -inkey private.pem -out enc.bin
7、查看二进制文件
安全test LDH$ xxd enc.bin
8、使用公钥对二进制签名文件进行解密
安全test LDH$ openssl rsautl -verify -in enc.bin -inkey public.pem -pubin -out dec1.txt
9、 从private.pem提取签名文件.csr
安全test LDH$ openssl req -new -key private.pem -out rsacert.csr
10、证书签名
安全test LDH$ openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
11、.der包含公钥和p12(私钥)
安全test LDH$ openssl x509 -outform der -in rsacert.crt -out rsacert.der
12、从rsacert.der中提取p12证书
安全test LDH$ openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt