美文网首页iOS Security
怎么在ios中应用“RSA的私钥加密或公钥加密算法”呢?

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

作者: 慧惠 | 来源:发表于2015-12-10 17:47 被阅读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、代码编写

    相关文章

      网友评论

      • 风已逝云:include、lib两个文件找不到,请作者指教
      • 慧惠:它不是支持arm64吗??
      • tom510230:如果要支持arm64要怎么搞呢?

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

      本文链接:https://www.haomeiwen.com/subject/exlyhttx.html