美文网首页
iOS-(rsa)非对称加密的简单生成和运用

iOS-(rsa)非对称加密的简单生成和运用

作者: IBigLiang | 来源:发表于2020-02-26 15:57 被阅读0次

    在上一篇文章中,笔者简单的阐述了,对称加密和非对称加密的一些概念,有兴趣的同学可以了点击下iOS-对称加密和(rsa)非对称加密。这篇文章,笔者主要用rsa相关的一些知识来运用一下。首先,我们可以通过以下的步骤来生成一对公钥和私钥,有两个目的,一是要大家都了解下生成的过程,二就是为我们后面使用公私钥进行rsa加密解密做准备。
    所有的操作都是在中端中完成,步骤如下:

    第一步:用openssl生成一个private.pem私钥文件
    openssl genrsa -out private.pem 1024
    
    第二步:用private.pem生成一个公钥文件
    openssl rsa -in private.pem -pubput -out public.pem
    
    第三步:通过private.pem文件生成一个csr文件
    openssl req -new -key private.pem -out rsacert.csr
    
    第四步:通过csr文件生成一个crt文件
    openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
    
    第五步:通过crt文件生成der文件,包含着公钥的信息
    openssl x509 -outform der -in rsacert.crt -out rsacert.der
    
    第六步:通过private.pem和crt文件生成p.p12,包含私钥信息
    openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
    

    在完成以上的步骤之后,我们就可以得到一个p.p12私钥文件和rsacert.der公钥文件,这两个文件是我们在代码中用到的。
    然后我们到代码中,先看如下代码结构图:


    image.png

    我们可以看到p12和der的两个公私钥文件已经载入,rsa的加密方式文件RSACryptor也到位,这样我们就可以用rsa的加密来试一下:
    首先加载公私钥到程序中:

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // 加载rsa公钥
        [[RSACryptor sharedRSACryptor] loadPublicKey:[[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil]];
        
        // 加载rsa私钥
        [[RSACryptor sharedRSACryptor] loadPrivateKey:[[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil] password:@"123456"];
    }
    

    然后用方法去做测试:

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        
        NSString * message = @"hello world";
        
        // 加密过程
        NSData *e = [[RSACryptor sharedRSACryptor] encryptData:[message dataUsingEncoding:NSUTF8StringEncoding]];
        
        // 解密过程
        NSData *d = [[RSACryptor sharedRSACryptor] decryptData:e];
        
        // 得到结果
        NSString * res = [[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding];
        // 打印结果
        NSLog(@"%@", res);
    }
    
    

    启动之后,点击屏幕,打印控制台如下:

    image.png
    上述过程,简单的运用了下rsa非对称加密的方式来加密hello world文字,然后进行解密。所以是不是没有想象中那么复杂。大家有兴趣可以跑跑代码试一试,代码地址已经奉上:代码地址:rsa非对称加密demo
    在此,补充一些知识点:
    1、其实rsa加密效率相对而言不是很好,因为其一些加密的特性,所以一般我们用来加密一些小数据。
    2、我们最常用的rsa加密,一般用在加密一些重要的key,还有就是数字签名等一些小数据加密。

    相关文章

      网友评论

          本文标题:iOS-(rsa)非对称加密的简单生成和运用

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