因为公司要求做了一个加密 网上的资料少有可用的 于是我看到了一位大神的曙光 但是未介绍使用方法
然后另一位大神给予了使用方法 但是没有把库给出来 我整理了一下 希望大家看的有些启发
证书生成
- 生成模长为1024bit的私钥
openssl genrsa -out private_key.pem 1024- 生成certification require file
openssl req -new -key private_key.pem -out rsaCertReq.csr- 生成certification 并指定过期时间
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt- 生成公钥供iOS使用
openssl x509 -outform der -in rsaCert.crt -out public_key.der- 生成私钥供iOS使用 这边会让你输入密码,后期用到在生成secKeyRef的时候会用到这个密码
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt- 生成pem结尾的公钥供Java使用
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout- 生成pem结尾的私钥供Java使用openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
这个是作者大大
附上库的地址https://github.com/PanXianyue/XYCryption
然后我现在开始教大家使用
XYRSACryption *mxRsa = [[XYRSACryption alloc]init]; //初始化 NSString *p12Path = [[NSBundle bundleForClass:[self class]] pathForResource:@"private_key" ofType:@"p12"];//找到私钥 [mxRsa loadPrivateKeyFromFile:p12Path password:@"xxxxx"];//输入你的私钥密码 NSString *enStr = [NSString stringWithFormat:@"%@",加密参数]; NSData *data =[enStr dataUsingEncoding:NSUTF8StringEncoding];//转化格式 NSData *signedData = [mxRsa sha256WithRSA:data];//签名 NSString * sin_key = [GTMBase64 stringByEncodingData:signedData];//加密
注 :rsa签名 要与后台的rsa一致 例如你是sha256 后台也要用同样的
废话不多说了 基本上这么做就没什么问题了 作者已经把库封装的很好啦直接用就行 感谢乐于奉献的人