数据加密转载iOS Developer

生成RSA用的证书

2016-03-23  本文已影响1926人  倚楼听风雨wing

一、背景简介

由于公司最近要在项目上增加热修复的功能,也就是下载一段JS代码就能修复已经上线了的APP的bug.可是由于公司服务器还没有升级到HTTPS,所以在JS传输过程的的安全问题,就成了一个重大的问题,最终决定用RSA加密的方式来保证数据传输的安全性.

二、制作RSA用的证书步骤

  1. 环境:openssl,由于Mac自带openssl环境,所以不用安装,直接打开终端. [注:生成的证书文件都在当前路径下,可以切换路径到想要保存证书文件的文件夹下]
  2. 生成密钥1024是指定密钥的长度
    openssl genrsa -out private.pem 1024
    在终端输入cat private.pem可以查看pem文件,经过查看可以知道这是一个base64编码的二进制文件.
  3. 生成证书请求文件(公钥,组织信息,联系人信息等,这里会让你输入很多东西,只需依次输入即可,如果不知道输入什么可以随便填写)
    openssl req -new -key private.pem -out rsa.csr
  4. 给签名后的证书设置有效期
    openssl x509 -req -days 365 -in rsa.csr -signkey private.pem -out rsa.crt
  5. 将pem文件格式转换成der格式 [目的:pem是经过base64。系统加密的时候要使用base64解码后的二进制文件]
    openssl x509 -outform der -in rsa.crt -out rsa.der
    6.导出我们的私钥p12
    openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsa.crt

7.der是公钥,p12是私钥,所在的路径是:当前终端的路径.

三、证书文件如何在项目中使用

把生成的derp12拖入到项目中

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //RSA  非对称加密   加密 要加载公钥   解密要加载私钥
    CryptorTools *tools = [CryptorTools new];
    
    //加密
    //加载公钥
    NSString *path = [[NSBundle mainBundle] pathForResource:@"rsa.der" ofType:nil];
    [tools loadPublicKeyWithFilePath:path];
    
    NSString *cryptStr = [tools RSAEncryptString:@"王启镰"];
    NSLog(@"王启镰RSA加密后的字符串: %@",cryptStr);
    
    //解密
    //加载私钥
    path = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
    
    /** 这里的123456就是在导出p12的时候你输入的密码 **/
    [tools loadPrivateKey:path password:@"123456"];
    NSString *decryptStr = [tools RSADecryptString:cryptStr];
    NSLog(@"解密后的字符串: %@",decryptStr);
}

四、知识补充

非对称加密算法RSA

使用场景
一般使用RSA加密对称加密的密钥

上一篇 下一篇

猜你喜欢

热点阅读