RSA+Base64加密

这段时间要做一个业务需求,说是为了安全起见把数据请求用RSA加密。然后咨询了下后台是怎么个加密方法,然后后台就给了个公钥和私钥,说,公钥加密,私钥加签,之后再Base64加密。上网搜索,整理了下,就得出如下结论,话不多说,直接上代码:

注意:RSA的公私密有格式的区分:PKCS#1 和 PKCS8,PKCS#1 是php使用的,PKCS8为java和客户端使用。切记

  • 首先!来个宏
#define PublicKEY  @"后台提供的公钥字符串"
#define PrivateKey @"后台提供的私钥字符串"
  • 其次,我们要用到一个第三方,这个第三方叫**HBRSAHandler**
导入头文件
 - #import "HBRSAHandler.h"
 HBRSAHandler这个库在使用的时候,这个只需要在Build Setting 里面的 Header search 
 path 和Library search path 这两个路径,把 HBRSAHandler里面的openssl里面的inc
 lude里面的openssl路劲拖进去就可以了。

然后,我们写入公钥和私钥

 HBRSAHandler* handler = [HBRSAHandler new];
    [handler importKeyWithType:KeyTypePrivate andkeyString:PrivateKey];
    [handler importKeyWithType:KeyTypePublic andkeyString:PublicKEY];

再接着,我们将需要加密和加签的值传入

  NSDictionary * cifCustomerDic = @{@"key":@"value"};
  (这里我们是传的json)
    
    //公钥加密之后的值:
    NSString * pubStr ;
    pubStr = [self dictionaryToJson:cifCustomerDic];
    pubStr =  [handler encryptWithPublicKey:pubStr];

    
    //私钥签名之后的值:
    NSString * priStr;
    priStr = [self dictionaryToJson:cifCustomerDic];
    priStr = [handler signString:perStr];

这里最后获取到的pubStr就是RSA公钥加密,再Base64加密之后的值
priStr就是RSA私钥加签,再Base64加密之后的值。

注意:[handler encryptWithPublicKey:pubStr]和 [handler signString:perStr];这两个返回值是RSA加密又Base64 加密之后的值。

附上Json转字符串的方法

#pragma mark - 字典转字符串
- (NSString*)dictionaryToJson:(NSDictionary *)dic
{
    NSError *parseError = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}

你可能感兴趣的:(数据处理)