iOS逆向之RSA加密(下)

本文主要介绍RSA的代码演示过程

RSA代码演示

前提:准备好公钥、私钥,需要在终端生成(属于自己签名)

另外作为开发者我总结了很多iOS进阶学习用到的文件视频等等资源,可以:点击领取

证书申请步骤

  • 1、申请CSR文件:keychain -> 证书助理 -> 从证书颁发机构请求证书

  • 2、生成CSR请求文件(证书颁发机构信息 + 公钥)

    • 命令:openssl req -new -key private.pem -out rsacert.csr

  • 3、生成CRT证书(自己签名,没有认证的)

    • 命令:openssl x509 -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
  • 4、生成der文件

    • 命令:openssl x509 -outform der -in rsacert.crt -out rsacert.der

  • 5、获取p12文件

    • 命令:openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

      注:代码中使用der格式

base64编码

base64编码由0-9、a-z、A-Z + /(64个字符 )加上 =(表示补零) 来组成的文本

终端命令

  • vi message.txt

  • base64编码:base64 message.txt -o abc.txt

  • base64解码:base abc.txt -o 123.txt -D

代码演示

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"en:%@", [self base64Encode:@"A"]);
    NSLog(@"de:%@", [self base64Decode:@"QQ=="]);

}

//编码
- (NSString *)base64Encode:(NSString *)string{
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions: 0];
}
//解码
- (NSString *)base64Decode:(NSString *)string{
    NSData *data = [[NSData alloc] initWithBase64EncodedString:string options:0];
    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

<!--打印结果-->
en:QQ==
de:A

base64说明

  • 1、base64只适用于表示二进制文件

  • 2、base64编码后,文件数量变多,不适合对大型数据进行编码

  • 3、bse64和数据是一一对应

代码演示

前提:通过证书申请步骤,准备好p12和der文件

  • 1、创建RSA加解密类:RSACryptor
<!--RSACryptor.h-->
#import <Foundation/Foundation.h>

@interface RSACryptor : NSObject

+ (instancetype)sharedRSACryptor;

    /**
     *  生成密钥对
     *
     *  @param keySize 密钥尺寸,可选数值(512/1024/2048)
     */
- (void)generateKeyPair:(NSUInteger)keySize;

    /**
     *  加载公钥
     *
     *  @param publicKeyPath 公钥路径
     *
     @code
     # 生成证书
     $ openssl genrsa -out ca.key 1024
     # 创建证书请求
     $ openssl req -new -key ca.key -out rsacert.csr
     # 生成证书并签名
     $ openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
     # 转换格式
     $ ope
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值