美文网首页就你这辣鸡还来开发我的iOSiOS Developer
iOS RSA加签 验签 与Java同步 pkcs8 pkcs1

iOS RSA加签 验签 与Java同步 pkcs8 pkcs1

作者: 一本大书 | 来源:发表于2017-03-16 10:29 被阅读865次

先简单介绍一下RSA。
1.加密、解密:使用公钥对数据进行加密,通过私钥对加密后的数据解密。
2.加签、解签:使用私钥对数据进行签名,通过加签名的数据和公钥进行数据验证,以确认合法性。

网上RSA相关的代码、文章有很多,这篇文章主要是提醒iOS开发者,注意pkcs8是用于java的,如果后端只给了你私钥,你要先判断一下这个私钥匙是不是iOS支持的pkcs1。

后端给了我一个.pem 文件,我按照网上的方法,通过终端使用openssl命令生成.csr文件,在这一步报错了,原因是这个.pem 文件密钥格式是pkcs8。可以通过用文本编辑器打开这个.pem格式的文件,判断一下密钥的长度。在线计算字符串长度<< 点这里(注意删除空格)。如果是按1024取模(通常都是1024),pkcs1格式的私钥长度应该是824(包含回车)。如果是pkcs8的格式的密钥长度为861。如果你的密钥长度不是824,就说明它不是iOS支持的按1024取模的pkcs1格式,你需要转换格式。

终端命令如下。

openssl pkcs8 -in pkcs8_private_key.pem -nocrypt -out pkcs1_private_key.pem

转换后你可以检查一下,这个pkcs1文件的密钥长度是不是824。

接下来就可以通过openssl生成 .csr -> .ctr -> .p12 ,这个步骤后边会有,从别人那边复制过来的。加签的代码我就不贴了,git上一大把,这篇文章主要是提醒iOS开发者,注意pkcs8与pkcs1的转换。

转换流程我走了一遍,可以看这里 >> pkcs8与pkcs1格式互转

openssl RSA 常用命令

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

  1. 生成模长为1024bit的私钥文件private_key.pem
openssl genrsa -out private_key.pem 1024
  1. 生成证书请求文件rsaCertReq.csr
openssl req -new -key private_key.pem -out rsaCerReq.csr

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

  1. 生成证书rsaCert.crt,并设置有效时间为10年
openssl x509 -req -days 3650 -in rsaCerReq.csr -signkey private_key.pem -out rsaCert.crt
  1. 生成供iOS使用的公钥文件public_key.der
openssl x509 -outform der -in rsaCert.crt -out public_key.der
  1. 生成供iOS使用的私钥文件private_key.p12
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt

相关文章

  • iOS RSA签名

    1、RSA私钥PKCS1 转 PKCS8 2、iOS RSA加签和验签(SHA1WithRSA) 3、iOS使用S...

  • iOS RSA加签 验签 与Java同步 pkcs8 pkcs1

    先简单介绍一下RSA。1.加密、解密:使用公钥对数据进行加密,通过私钥对加密后的数据解密。2.加签、解签:使用私钥...

  • swift-RSA(五)-签名/验签

    RSA支持加解密,也支持签名/验签。使用rsa如何签名/验签呢? 1.rsa 签名 2.rsa 验签 3.调用

  • iOS RSA加签和验签

    RSA是一种非对称加密算法,使用公钥加密就可以使用私钥解密,使用私钥加密就可以使用公钥解密。RSA公钥对外公开,私...

  • 家雀

    点赞!!!iOS RSA加签和验签RSA是一种非对称加密算法,使用公钥加密就可以使用私钥解密,使用私钥加密就可以使...

  • iOS RSA2048本地生成密钥对

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

  • Swift RSA 加签验签

    Mac 终端生成密钥 生成私钥 生成公钥 生成证书 生成的密钥字符串 RSAKey 结构体用来存储已经生成的私钥和...

  • iOS-RSA2加签、验签

    私钥加密: 1.使用哈希算法获取待签名字符串的摘要 2.使用私钥字符串获取SecKeyRef指针,通过读取pem文...

  • openssl RSA密钥格式PKCS1和PKCS8相互转换

    RSA私钥格式PKCS1和PKCS8相互转换 RSA公钥格式PKCS1和PKCS8相互转换 以下转换基于opens...

  • iOS 原生RSA加解密 及生成密钥对

    iOS 不仅提供了RSA加解密,签名验签的功能,同时还提供了生成密钥对的方法。 关于分段加密因为RSA是需要分段加...

网友评论

  • tuyw:你好,我有个疑问,我用openssl取模1024生成的私钥长度是824的,并不是812,请问这是什么原因?
    一本大书:@玛雅小哥 我忘记是否要算上回车键了,挺久之前写的
    一本大书:@玛雅小哥 应该是回车

本文标题:iOS RSA加签 验签 与Java同步 pkcs8 pkcs1

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