本文主要介绍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