美文网首页
iOS RSA算法加密 证书读取秘钥 数据加密

iOS RSA算法加密 证书读取秘钥 数据加密

作者: 空空小僧 | 来源:发表于2020-02-23 14:03 被阅读0次

    最近做的需求,涉及到一些安全校验,要求数据传输或者数据解析必须安全一些,所以想到了常用的非对称RSA加密,所以自己尝试练手加密解密某些数据

    1.生成公私钥证书

    利用MAC系统自带的openssl命令,到一个指定文件夹下(方便自己管理),可以生成一对公私钥信息,命令如下:
    1.生成私钥文件

    genrsa -out  private_key.pem 1024  //生成私钥Pem文件
    

    2.私钥文件做转码处理

    pkcs8 -topk8 -inform PEM -in private_key.pem -outform PEM -nocrypt  //将私钥文件转成PKCS8格式,否则我们直接data转字符串作为私钥的时候,不成功,这一步是很关键的
    

    控制台输入如下,我们可以将这个文本字符串赋值下来,保存成字符传,去掉换行符


    image.png

    用到xcode的工程大概为(不要管为啥私钥不一样,因为我随意写的)


    image.png

    3.生成公钥文件

    //这些命令都保证在一个文件夹内操作,这个文件可以直接文本打开读取里面的公钥,为啥不需要编码没get到原理
    rsa -in private_key.pem -pubout -out public_key.pem  
    

    这样,文件夹下面就会有2个Pem格式的文件了,保留好证书文件,省的字符串发生变化的时候,不知道怎么找回

    使用RSA加密数据

    基于iOS系统,首先看有没有造好的轮子,有个比较方便的库Objective-C-RSA,可以直接下载使用,就2个文件,API也比较简单

    #import <Foundation/Foundation.h>
    
    @interface RSA : NSObject
    
    // return base64 encoded string
    + (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
    // return raw data
    + (NSData *)encryptData:(NSData *)data publicKey:(NSString *)pubKey;
    // return base64 encoded string
    + (NSString *)encryptString:(NSString *)str privateKey:(NSString *)privKey;
    // return raw data
    + (NSData *)encryptData:(NSData *)data privateKey:(NSString *)privKey;
    
    // decrypt base64 encoded string, convert result to string(not base64 encoded)
    + (NSString *)decryptString:(NSString *)str publicKey:(NSString *)pubKey;
    + (NSData *)decryptData:(NSData *)data publicKey:(NSString *)pubKey;
    + (NSString *)decryptString:(NSString *)str privateKey:(NSString *)privKey;
    + (NSData *)decryptData:(NSData *)data privateKey:(NSString *)privKey;
    
    @end
    
    

    感兴趣的小伙伴去尝试吧

    相关文章

      网友评论

          本文标题:iOS RSA算法加密 证书读取秘钥 数据加密

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