ios RSA非对称加密证书的生成

作者: 像小强一样活着 | 来源:发表于2016-11-18 14:21 被阅读920次

证书的概念在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于解密. 首先需要先生成这些文件,然后再将文件导入工程使用,不多说,开始做!

数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。实际上,数字证书就是经过CA认证过的公钥。

原则:

1、一个公钥对应一个私钥。

2、密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

3、如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

4、如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

5、非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的

基于公开密钥的加密过程

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

1、Bob将他的公开密钥传送给Alice。

2、Alice用Bob的公开密钥加密她的消息,然后传送给Bob。

3、Bob用他的私人密钥解密Alice的消息。

基于公开密钥的认证过程

身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此 Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。

一、使用openssl生成所需秘钥文件

生成环境是在mac系统下,使用openssl进行生成,首先打开终端,按下面这些步骤依次来做:

1. 生成模长为1024bit的私钥文件private_key.pem

openssl genrsa -out private_key.pem 1024

2. 生成证书请求文件rsaCertReq.csr

openssl req -new -key private_key.pem -out rsaCerReq.csr

注意:这一步会提示输入国家、省份、mail等信息,可以根据实际情况填写,或者全部不用填写,直接全部敲回车.

3. 生成证书rsaCert.crt,并设置有效时间为10年

openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt

4. 生成供iOS使用的公钥文件public_key.der

openssl x509 -outform der -in rsaCert.crt -out public_key.der

5. 生成供iOS使用的私钥文件private_key.p12

openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt

注意:这一步会提示给私钥文件设置密码,直接输入想要设置密码即可,然后敲回车,然后再验证刚才设置的密码,再次输入密码,然后敲回车,完毕!

在解密时,private_key.p12文件需要和这里设置的密码配合使用,因此需要牢记此密码.

6. 生成供Java使用的公钥rsa_public_key.pem

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

7. 生成供Java使用的私钥pkcs8_private_key.pem

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

全部执行成功后,会生成如下文件,其中public_key.der和private_key.p12就是iOS需要用到的文件,如下图:

生成的文件

二、将文件导入工程使用

1.新建工程, 并导入Security.framework框架,新建工程并添加框架

2.导入秘钥文件

注:1> java那个使用公钥的部分,应该使用上述的第5步生成的 pkcs8_private_key.der 文件,不要看错了

2> OC中在bundle中要是找不到der类型的文件,此时,需要改一下上述6.2生成的 rsa_public_key.der 文件的后缀为 .cer 才可以

相关文章

  • ios RSA非对称加密证书的生成

    证书的概念在iOS中使用RSA加密解密,需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公...

  • RSA非对称加密

    RSA非对称加密 RSA非对称加密, 适用于Java和iOS 应用场景:用户登录时对登录密码进行加密 启动终端, ...

  • kotlin版本RSA非对称加密解密与分段加密解密

    基于kotlin语言的RSA非对称加密解密与分段加密解密 RSA非对称加密 RSA非对称加密的具体算法与来源我就不...

  • iOS 常规加密算法

    非对称加密: RSA:https、苹果的p12证书等 认证都是通过RSA--公钥加密,私钥解秘--私钥加密,公钥解...

  • python的加密方式: rsa加密和解密

    RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。 公钥、私钥的生成 生成文件如下图: 可以将生成的公钥、私...

  • RSA非对称加密算法

    RSA算法,经典非对称加密算法,通过生成公钥 私钥 进行加密解密 公钥加密 私钥解密 反之 私钥加密 公钥...

  • RSA加密解密算法—编程实战

    本章涉及知识点1、对称加密的概念2、非对称加密的概念3、RSA安全性的奥秘4、RSA秘钥的生成算法5、RSA明文的...

  • ssh免密登录 scp免密传输

    我们采用RSA非对称加密算法,原理: 如果,A要和B通讯,则: (1). A通过RSA算法生成公钥(.pub)和私...

  • iOS RSA2048本地生成密钥对

    iOS中生成RSA密钥字符串iOS使用OpenSSL进行RSA加密、验签的心得RSA_generate_key_e...

  • 非对称加密算法RSA 学习

    非对称加密算法RSA 学习 RSA加密算法是一种非对称加密算法。RSA是1977年由罗纳德·李维斯特(Ron Ri...

网友评论

  • Sky521:博主,是不是用RSA加密必须要这些文件,只有公钥,私钥字符串不能加密解密么?
  • kuckyson:openssl默认的是sha1算法,怎么改为sha256?
  • iloverain:生成的iOS公钥私钥, Java公钥私钥 这四个是对应的吗. 生成的时候有什么要注意的, 比如文件名?
    下次我要再生成一组证书, 还会是一样的吗?
    不大懂.
  • priate:用<pre>和</pre> 你自己摸索着试一试
  • 4990145ebbf7:如果需要从手机上动态生成RSA密钥对,每个用户拥有唯一的公钥和私钥,这样改如何做呢?
    5d6bbd1d40d3:@hitlerstar 我也需要,邮箱 ClavisJJ@Gmail.com,谢谢~
    4990145ebbf7:多谢朋友了,我的邮箱 39713332@qq.com 新年快乐,恭喜发财
    891811bcc4fd:@睡觉要好看 我有,需要的话留下联系方式发给你

本文标题:ios RSA非对称加密证书的生成

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