zoukankan      html  css  js  c++  java
  • iOS RSA非对称加密测试流程

    非对称加密需要两把钥匙:公钥和秘钥。

    单向加密:一般情况下服务器会持有秘钥和公钥,那该怎么使用呢?以注册场景为例,最初服务器持有公钥和密钥。

    用户注册时不是直接发送用户名,密码,验证码等明文信息给服务器请求注册。而是先发送一个注册请求,服务器会把公钥返回给客户端,服务器返回的公钥一般是一个base64编码的字符串。客户端会把密码信息用这个公钥加密,得到一个密文,之后再将“用户名”+“密码的密文”+“验证码”之类的信息发送给服务器,服务器收到请求,将得到的密码密文解密,得到铭文密文+用户名+验证码,验证以后返回给客户端是否注册成功。

    下面先说一下如何生成公钥和密钥。

    MAC自带了openssl工具,我们可以很容易生成公钥密钥:生成步骤

    1、打开终端,输入
    openssl

    2、生成一个长度为 1024字节的密钥
    $  genrsa -out private_key.pem 1024
    解释:genrsa : generate RAS 的缩写,指定生成秘钥的方法为RSA
    -out 后面是输出的密钥文件名
    1024表示生成秘钥的长度 1024 bityes
    3、根据秘钥请求一个整数,可以拿着这个整数去证书颁发机构(CA)申请一个数字证书,CA会给你一个新的cacert.pem,那才是你的数字证书。
    req -new -key private_key.pem -out rsaCertReq.csr

    4、生成整数并签名,有效期10年
    $ x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
    解释:
    509是一种通用的证书格式
    将用上面生成的秘钥 private_key.pem 和 rsaCert.crt 证书请求文件生成一个数字证书 rsacert.crt。这个就是公钥

    5、格式转换,将PEM格式文件转成 DER格式:(供ios端测试用)
    $ x509 -outform der -in rsaCert.crt -out public_key.der
    解释:
    在ios开发当中,公钥是不能使用 base64编码的,上面的命令是把公钥的base64编码字符串装换为二进制数据

    6、ios开发当中,私钥不能直接使用,需要导出一个p12文件(private_key.p12):(供ios端测试用)
    $ pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt

    7、用私钥 生成 可供后台使用的公钥rsa_public_key.pem
    $ rsa -in private_key.pem -out rsa_public_key.pem -pubout

    8、生成可供后台使用的私钥 pkcs8_private_key.pem
    $ pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
    9、生成可供 java 后端使用的私钥 pkcs8_private_key.pem
    $ openssl pkcs8 -topk8 -inform PEM -in private_key.pem -outform DER -nocrypt -out pkcs8_private_key.der



    现在,公钥密钥都有了。

    参考:

    https://blog.csdn.net/Boyqicheng/article/details/51858429

    写了一个Demo,可以测试RSA加密字符串的流程。加密过程是有点慢的。

    https://github.com/wjwdive/RSAEncrypt.git

  • 相关阅读:
    用GDB调试程序(一)
    关于“鸡脚神”的看法
    Oracle 经典SQL 专为笔试准备
    怎样设计接口?
    myeclipse6.0下载及注冊码
    VB连接Mysql数据库
    开源html5_kiwijs_helloworld
    server宕机监控、检測、报警程序(139绑定手机短信报警)monitor_down.sh
    js实现自己定义鼠标右键-------Day45
    C/C++程序猿必须熟练应用的开源项目
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/9108777.html
Copyright © 2011-2022 走看看