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

最近做的需求,涉及到一些安全校验,要求数据传输或者数据解析必须安全一些,所以想到了常用的非对称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转字符串作为私钥的时候,不成功,这一步是很关键的

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


iOS RSA算法加密 证书读取秘钥 数据加密_第1张图片
image.png

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


iOS RSA算法加密 证书读取秘钥 数据加密_第2张图片
image.png

3.生成公钥文件

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

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

使用RSA加密数据

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

#import 

@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算法加密 证书读取秘钥 数据加密)