美文网首页
简述客户端RSA加密解密

简述客户端RSA加密解密

作者: 进阶的蚊子 | 来源:发表于2017-07-19 17:07 被阅读97次

    在IOS的app登陆模块,用户名和密码如果直接传给后台服务器,很容易被截获并伪造网络请求,

    如果利用RSA算法在每个客户端利用公钥解密,服务器端进行私钥解密,即使截获了密码也是无法解密的.
    在Mac 上自带了openssl 可以生成公钥私钥.
    通过下面的几步可以生成对应的需要的证书和公钥 私钥
    先打开终端 cd 到一个容易找到的文件夹
    1 生成私钥
    openssl genrsa -out private.pem 1024
    // openssl:是一个自由的软件组织,专注做加密和解密的框架。
    // genrsa:指定了生成了算法使用RSA
    // -out:后面的参数表示生成的key的输入文件
    // 1024:表示的是生成key的长度,单位字节(bits)

    2 创建证书请求
    openssl req -new -key private.pem -out rsacert.csr

    3 生成证书并签名,有效期10年
    openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
    //509是一种非常通用的证书格式。
    //将用上面生成的密钥privkey.pem和rsacert.csr证书请求文件生成一个数字证书rsacert.crt。这个就是公钥

    4 转换格式 将 PEM 格式文件 转换成 DER 格式
    openssl x509 -outform der -in rsacert.crt -out rsacert.der

    //在 iOS开发中,公钥是不能使用base64编码的,上面的命令是将公钥的base64编码字符串转换成二进制数据
    //导出 P12 文件

    5 在iOS使用私钥不能直接使用,需要导出一个p12文件。下面命令就是将私钥文件导出为p12文件。
    openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

    执行完上述操作 会得到


    2385F240-82E3-4034-8A67-348D7C788CE7.png

    上面的命令会生成5个文件,IOS用到的是rsacert.der和p.p12导入到项目中不要直接拖拽进去,而是点击Xcode右下角的+号,选择add files to ""
    新建项目后添加库:Security.framework在项目中添加所依赖的文件RSAEncryptor和NSData+Base64
    在这里下载

    在控制器类里面执行代码
    - (void)touchesBegan:(NSSet<UITouch > )touches withEvent:(UIEvent )event
    {
    RSAEncryptor
    rsaEncryptor = [[RSAEncryptor alloc] init];
    NSString
    publicKeyPath = [[NSBundle mainBundle] pathForResource:@"rsacert" ofType:@"der"];
    NSString
    privateKeyPath = [[NSBundle mainBundle] pathForResource:@"p" ofType:@"p12"];
    [rsaEncryptor loadPublicKeyFromFile: publicKeyPath];
    [rsaEncryptor loadPrivateKeyFromFile: privateKeyPath password:@""]; // 密码这个是创建证书的时候输入的 如果没输入这里不填写

      NSString* restrinBASE64STRING = [rsaEncryptor rsaEncryptString:@"你好,新的世界之窗"];
      NSLog(@"加密后的: %@", restrinBASE64STRING);     //加密
      NSString* decryptString = [rsaEncryptor rsaDecryptString: restrinBASE64STRING];//解密
      NSLog(@"解密后的: %@", decryptString);
    }
    

    运行结果:

    2017-07-19 17:03:46.425005+0800 RSA加密[445:57891] 加密后的: Vn/frFlIEM4DRA88SYRMRtBGeVqCpDlZCUYXmx1L2/gSSc0ye0GvlQCaGB8+UQj8JXNg9DYcQafRT3SgD/PChSfFZtQIoVJTXHbzedPonSUYkaftdIpslrLIB/XuV9XF6QnY2tfIpbmc9NGQbRgqihmQDKWNFOd3pERwutpUj2A=
    2017-07-19 17:03:46.433864+0800 RSA加密[445:57891] 解密后的: 你好,新的世界之窗

    总结:这就是iOS客户端加密和解密的简单步骤了.希望能帮到大家.

    相关文章

      网友评论

          本文标题:简述客户端RSA加密解密

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