https://github.com/coderzhuxh/bbrsacryptor-xhadd
1行代码调用(RSA公钥、私钥生成,客户端RSA加密、解密,RSA签名,签名验证等
https://github.com/coderzhuxh/bbrsacryptor-xhadd
Last synced: about 1 year ago
JSON representation
1行代码调用(RSA公钥、私钥生成,客户端RSA加密、解密,RSA签名,签名验证等
- Host: GitHub
- URL: https://github.com/coderzhuxh/bbrsacryptor-xhadd
- Owner: CoderZhuXH
- Created: 2016-05-10T10:10:51.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-18T08:11:02.000Z (about 10 years ago)
- Last Synced: 2025-03-27T09:40:53.056Z (about 1 year ago)
- Language: C
- Homepage:
- Size: 6.01 MB
- Stars: 9
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BBRSACryptor+XHAdd
## 1.RSA算法2个作用:
* 1.加密:客户端使用公钥加密数据,服务器端使用私钥解密数据(主要实现数据加密)。
* 2.加签:客户端用私钥加签,服务器端用公钥验签(主要为了防止别人模拟我们的客户端来攻击我们的服务器,导致瘫痪)。
## 2.RSA客户端与服务器交互流程
### 1.公钥私钥生成,保存
* 1.客户端生成一对公钥私钥,假如叫公钥K、私钥K,
服务器生成一对公钥私钥,假如叫公钥F、私钥F.
* 2.客服端把公钥K 发给服务器,服务器保存公钥K,
服务器把公钥F 发给客服端,客服端保存公钥F.
(公钥都发给对方,自己保留私钥)
### 2.加密交互流程
* 1.客服端用公钥F加密数据,服务器接收后,用私钥F解密.
服务器用公钥K加密数据,客服端接收后,用私钥k解密.
### 3.签名交互流程
* 1.客服端用私钥k签名,服务器用公钥k验证签名
## 3.导入步骤
* 1.将RSALibary文件夹加入工程
* 2.在TARGETAS-Build Settings中配置Header Search Pathes 添加文件搜索相对路径 ./RSALibary/OpenSSL/include
* 3.导入BBRSACryptor+XHAdd.h,使用[BBRSACryptor createPublicKeyAndPrivateKey]生成公钥,私钥
* 4.运行后,在控制台会打印出证书路径,进入路径后,可以看到公钥证书(bb.publicKey.pem)和私钥证书(bb.privateKey.pem),将两证书拷贝到桌面.pem后缀改为.txt并打开,将—–BEGIN PUBLIC KEY—–和—–END PUBLIC KEY—–之间的部分复制,新建一个宏,来保存这个公钥(宏定义时,公钥中若有换行,记得删除),客户端仅保存公钥即可,私钥放在服务器上。
## 4.使用方法:
```objc
/**
* 生成公钥,私钥 (生成成功后控制台会打印出 公钥,私钥 存储路径)
*/
+(void)createPublicKeyAndPrivateKey;
/**
* 公钥加密
*
* @param string 普通字符串
* @param publicKey 公钥
*
* @return 加密后字符串
*/
+(NSString *)encryptString:(NSString *)string publicKey:(NSString *)publicKey;
/**
* 公钥解密
*
* @param string 私钥加密字符串
* @param publicKey 公钥
*
* @return 解密后字符串
*/
+(NSString *)decodingString:(NSString *)string publicKey:(NSString *)publicKey;
/**
* 私钥加密
*
* @param string 普通字符串
* @param privateKey 私钥
*
* @return 加密后字符串
*/
+(NSString *)encryptString:(NSString *)string privateKey:(NSString *)privateKey;
/**
* 私钥解密
*
* @param string 公钥加密字符串
* @param privateKey 私钥
*
* @return 解密后字符串
*/
+(NSString *)decodingString:(NSString *)string privateKey:(NSString *)privateKey;
/**
* 私钥签名
*
* @param string 普通字符串
* @param privateKey 私钥
*
* @return 签名后字符串
*/
+(NSString *)singString:(NSString *)string privateKey:(NSString *)privateKey;
/**
* 私钥签名MD5
*
* @param string 普通字符串
* @param privateKey 私钥
*
* @return 签名后字符串
*/
+(NSString *)singMD5String:(NSString *)string privateKey:(NSString *)privateKey;
/**
* RSA sha1 验证签名
*
* @param string 普通字符串
* @param signString 签名字符串(base64)
* @param publicKey 公钥
*
* @return 验证结果
*/
+(BOOL)verifyString:(NSString *)string sign:(NSString *)signString publicKey:(NSString *)publicKey;
/**
* RSA MD5 验证签名
*
* @param string 普通字符串
* @param signString 签名字符串
* @param publicKey 公钥
*
* @return 验证结果
*/
+(BOOL)verifyMD5String:(NSString *)string sign:(NSString *)signString publicKey:(NSString *)publicKey;
```