iOS客户端、java服务器的通信用RSA加密
2014-03-13 10:45
344 查看
我的cocoachina发帖
http://www.cocoachina.com/bbs/read.php?tid=166990
openssl实现iOS 和 java服务器端的rsa加密解密。
?服务器这边比较简单,openssl生成一对秘钥public.key
private.key 然后private.key进行pkcs8转换,不转换java没法读取,转换后使用java自带api即可读取。
命令如下
?
iOS 现将openssl加入到工程里面,openssl头文件和libcrypto.a libssl.a
具体可参考OpenSSLRSAWrapper 注意Header Search Paths和 Library Search Paths需要分加入openssl头文件路径和lib路径,参考附件OpenSSLRSAWrapper工程。
服务器将公钥发过来的时候可以选择public.key的文件,这个最简单了,保存文件然后读取就成。
如果想发送public.key文件的内容,那么就在客户端先把内容写入到一个新的public.key的文件在读取。要注意全部内容都要发送过来,而且换行也要标记,否则不能用。
示例。
?
关键代码
写入到文件的
读取public.key的关键代码
加密、解密的代码,参考附件那个代码吧。
加密代码中那个 RSA_check_key(_rsa); 是不需要的。
http://www.cocoachina.com/bbs/read.php?tid=166990
openssl实现iOS 和 java服务器端的rsa加密解密。
?服务器这边比较简单,openssl生成一对秘钥public.key
private.key 然后private.key进行pkcs8转换,不转换java没法读取,转换后使用java自带api即可读取。
命令如下
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的文件在读取。要注意全部内容都要发送过来,而且换行也要标记,否则不能用。
示例。
-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDmy13dRbbn0WzH6L4lz6THSFyo DZWPNwsAOFXXAL22D1mqQ+lpkSQbaDZJiq1JEjbeBTsMmXmB5aPP5nIUv4RWNynt 0YfBmftUJbfy8kVyjG5T4UQb05BGiOQf5eEFANH/PIsk8DHhd5EbxK3xyE8rgtmq /sXORob0liGnrnJVZwIDAQAB -----END PUBLIC KEY-----
?
关键代码
写入到文件的
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的关键代码
#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); 是不需要的。
相关文章推荐
- iOS客户端与JAVA服务器之间的RSA加密解密
- iOS客户端与JAVA服务器之间的RSA加密解密【转】
- iOS客户端与JAVA服务器之间的RSA加密解密
- iOS客户端、java服务器的通信用RSA加密
- 关于Des加密(Android与ios 与后台java服务器之间的加密解密
- JS客户端RSA加密,Java服务端解密
- 关于 Des加密(Android与ios 与后台java服务器之间的加密解密)
- Java后台服务器接收IOS客户端上传的图片
- IOS and JAVA 的 RSA 加密解密
- iOS 与Java 配合在用户登录的时候对用户名和密码进行RSA加密
- iOS 客户端进行 RSA 加密并在 PHP 服务端进行解密
- iOS客户端发送json数据,java(servlet)服务器接受json数据
- IOS下使用RSA加密与PHP通信,使用服务器下发的NSString类型参数
- openssl实现iOS 和 java服务器端的rsa加密解密。
- security.js RSA 加密与java客户端解密
- RSA客户端js加密服务器C#解密(含源码)
- string转Unicode的java和javascript代码(客户端到服务器之间的密码加密的过程)
- JS客户端RSA加密,Java服务端解密
- Java和android及iOS对接RSA加密经验
- IOS and JAVA 的 RSA 加密解密