iOS Security

怎么在ios中应用“RSA的私钥加密或公钥加密算法”呢?

2015-12-10  本文已影响919人  慧惠

RSA基本原理

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

公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端.

私钥(private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题.

iOS中的Security.framework提供了对RSA算法的支持.这种方式需要对密匙对进行处理, 根据public key生成证书, 通过private key生成p12格式的密匙.

除了Secruty.framework, 也可以 将openssl库编译到iOS工程中 , 这可以提供更灵活的使用方式.

一:客户端发送流程(公钥加密,私钥解密)

二:客户端接收流程(私钥加密,公钥解密)

1、使用openssl生成密钥对

Github Gist: https://gist.github.com/lvjian700/635368d6f1e421447680(参考链接)

#!/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 -in rsaCert.crt

echo"create rsa_public_key.pem For Java"

openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout

echo"create pkcs8_private_key.pem For Java"

openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt

echo"finished."

提示:

1)在创建证书的时候, terminal会提示输入证书信息. 根据提示输入对应信息就OK.

2)在创建p12密匙时, 会提示输入密码, 此时的密码必须记住, 之后会用到.

3)如果上面指令有问题,请参考最新的openssl官方文档, 以官方的为准.

2、下载RSA-objc文件夹。

RSA-objc的下载链接:https://github.com/jslim89/RSA-objc,从RSA-objc的项目中取出RSA-objc文件夹

3、下载openssl library:

取出include、lib文件夹。下载链接:https://github.com/st3fan/ios-openssl

4、新建一个项目,将文件夹RSA-objc、include、lib拷贝到根目录下,如图:

5、设置环境变量:

设置“Header Search Paths” 的值为/Users/huangzhiming/Desktop/work/OpenSSL/OpenSSL/include  (绝对路径)

注意:设置“Header Search Paths” 的值时,$(PROJECT_DIR)/myRES/include(这么写是相对路径)

设置“Valid Architectures” 的值为 armv7/armv7s。如图:

6、代码编写

上一篇下一篇

猜你喜欢

热点阅读