吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9560|回复: 3
收起左侧

[iOS 转帖] iOS客户端、java服务器的通信用RSA加密

  [复制链接]
小野 发表于 2014-5-27 17:07
服务器这边比较简单,openssl生成一对秘钥public.key private.key 然后private.key进行pkcs8转换,不转换java没法读取,转换后使用java自带api即可读取。
命令如下
[AppleScript] 纯文本查看 复制代码
openssl genrsa -out private.key 1024 
  
  
openssl rsa -in private.key -pubout -out public.key 
  
  
openssl pkcs8 -topk8 -in private.key-out pkcs8_private.key -nocrypt  


iOS 现将openssl加入到工程里面,openssl头文件和libcrypto.a libssl.a
具体可参考OpenSSLRSAWrapper 注意Header Search Paths和 Library Search Paths需要分加入openssl头文件路径和lib路径,参考附件OpenSSLRSAWrapper工程。
服务器将公钥发过来的时候可以选择public.key的文件,这个最简单了,保存文件然后读取就成。
如果想发送public.key文件的内容,那么就在客户端先把内容写入到一个新的public.key的文件在读取。要注意全部内容都要发送过来,而且换行也要标记,否则不能用。
示例。
[AppleScript] 纯文本查看 复制代码
-----BEGIN PUBLIC KEY----- 
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmy13dRbbn0WzH6L4lz6THSFyo 
DZWPNwsAOFXXAL22D1mqQ+lpkSQbaDZJiq1JEjbeBTsMmXmB5aPP5nIUv4RWNynt 
0YfBmftUJbfy8kVyjG5T4UQb05BGiOQf5eEFANH/PIsk8DHhd5EbxK3xyE8rgtmq 
/sXORob0liGnrnJVZwIDAQAB 
-----END PUBLIC KEY-----




关键代码
写入到文件的
[AppleScript] 纯文本查看 复制代码
NSString *publicKeyStr = [NSString stringWithFormat:@"-----BEGIN PUBLIC KEY-----\n%@\n%@\n%@\n%@\n-----END PUBLIC KEY-----", 
                                 @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmy13dRbbn0WzH6L4lz6THSFyo", 
                                 @"DZWPNwsAOFXXAL22D1mqQ+lpkSQbaDZJiq1JEjbeBTsMmXmB5aPP5nIUv4RWNynt", 
                                 @"0YfBmftUJbfy8kVyjG5T4UQb05BGiOQf5eEFANH/PIsk8DHhd5EbxK3xyE8rgtmq", 
                                 @"/sXORob0liGnrnJVZwIDAQAB"]; 
[publicKeyStr writeToFile:RSAPublickKeyFile atomically:YES encoding:NSASCIIStringEncoding error:&error];




读取public.key的关键代码

[AppleScript] 纯文本查看 复制代码
#include <openssl/rsa.h> 
#include <openssl/pem.h> 
  
  
- (void)importRSAKeys 
{ 
    FILE *publicKeyFile; 
    RSA *_rsa; 
   
    publicKeyFile = fopen([RSAPublickKeyFile cStringUsingEncoding:NSASCIIStringEncoding], "rb");     
   
    if (NULL != publicKeyFile) { 
        const char *publicKeyFileName = [RSAPublickKeyFile cStringUsingEncoding:NSASCIIStringEncoding]; 
        BIO *bpubKey = NULL; 
        bpubKey = BIO_new(BIO_s_file()); 
        BIO_read_filename(bpubKey, publicKeyFileName); 
   
        _rsa = PEM_read_bio_RSA_PUBKEY(bpubKey, NULL, NULL, NULL); //PEM_read_RSAPublicKey(file,NULL, NULL, NULL); 
        BIO_free_all(bpubKey); 
    } 
  
  
}




加密、解密的代码,参考附件那个代码吧。
加密代码中那个 RSA_check_key(_rsa); 是不需要的

免CB下载地址:http://pan.baidu.com/s/1nt7bpot

很多网上都能搜到,懒得仔细写了。
把过程汇总下

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

阿e在师大 发表于 2014-5-29 16:39
支持!学习了!。。。。
仲夏 发表于 2014-5-27 17:21
Ty_rone 发表于 2015-7-21 15:23
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 05:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表