rsa的基本原理

RSA简介 RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法(SHA MD5), 也可以用于文件签名. 这种加密传输方式会被用在网银类App中.虽然网银会采用全站https方案, 但是在安全登录这块会使用另一个证书对登录信息加密, 这样可以双层确保数据安全. 本文环境 mac os openssl-1.0.1j, openssl需要使用1.x版本

RSA简介

RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法(SHA MD5), 也可以用于文件签名. 这种加密传输方式会被用在网银类App中.虽然网银会采用全站https方案, 但是在安全登录这块会使用另一个证书对登录信息加密, 这样可以双层确保数据安全.

本文环境

  1. mac os
  2. openssl-1.0.1j, openssl需要使用1.x版本,推荐使用homebrew
  3. 安装. Java 8

RSA基本原理

RSA使用”秘匙对”对数据进行加密解密.在加密解密数据前,需要先生成公钥(public key)和私钥(private key).

  1. 公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端.
  2. 私钥(private key):用于解密数据. 必须保密, 私钥泄露会造成安全问题.
    iOS中的Security.framework提供了对RSA算法的支持.这种方式需要对密匙对进行处理, 根据public key生成证书, 通过private key生成p12格式的密匙.
    除了Secruty.framework, 也可以将openssl库编译到iOS工程中, 这可以提供更灵活的使用方式. 本文使用Security.framework的方式处理RSA.

使用Openssl生成秘钥对


// 在bash命令下输入一下命令,需要一步一步地进行
#!/usr/bin/env bash
echo "Generating RSA key pair ..."  

echo "1024 RSA key: private_key.pem"
openssl genrsa -out private_key.pem 1024

echo "create certification require file: rsaCertReq.csr"
openssl req -new -key private_key.pem -out rsaCertReq.csr

echo "create certification using x509: rsaCert.crt"
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt

echo "create public_key.der For IOS"
openssl x509 -outform der -in rsaCert.crt -out public_key.der

echo "create private_key.p12 For IOS. Please remember your password. The password will be used in iOS."
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -
知秋君
上一篇 2024-08-01 07:12
下一篇 2024-07-31 22:48

相关推荐