IOS中怎么做RSA加密算法

求教~... 求教~ 展开
 我来答
帐号已注销
推荐于2016-01-29 · TA获得超过4.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:77%
帮助的人:2307万
展开全部

RSA加密以及解密实现步骤:

1、使用openssl生成密匙对。

代码如下:(代码源于github开源社区)

#!/usr/bin/env bash  
echo "Generating RSA key pair ..."  
echo "1024 RSA key: private_key.pem"  
openssl genrsa -out private_key.pem 1024  
  
echo "create certification require file: rsaCertReq.csr"  
openssl req -new -key private_key.pem -out rsaCertReq.csr  
  
echo "create certification using x509: rsaCert.crt"  
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt  
  
echo "create public_key.der For IOS"  
openssl x509 -outform der -in rsaCert.crt -out public_key.der  
  
echo "create private_key.p12 For IOS. Please remember your password. The password will be used in iOS."  
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt  
  
echo "create rsa_public_key.pem For Java"  
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout  
echo "create pkcs8_private_key.pem For Java"  
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt  
  
echo "finished."

2、加载证书后即可进行加密算法。

代码:

RSAEncryptor *rsa = [[RSAEncryptor alloc] init];  
  
    NSLog(@"encryptor using rsa");  
    NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public_key" ofType:@"der"];  
    NSLog(@"public key: %@", publicKeyPath);  
    [rsa loadPublicKeyFromFile:publicKeyPath];  
  
    NSString *securityText = @"hello ~";  
    NSString *encryptedString = [rsa rsaEncryptString:securityText];  
    NSLog(@"encrypted data: %@", encryptedString);

对应解密代码:

NSLog(@"decryptor using rsa");  
    [rsa loadPrivateKeyFromFile:[[NSBundle mainBundle] pathForResource:@"private_key" ofType:@"p12"] password:@"123456"];  
    NSString *decryptedString = [rsa rsaDecryptString:encryptedString];  
    NSLog(@"decrypted data: %@", decryptedString);

RSA基本原理:

RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(public key)和私钥(private key)。

公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端。

私钥(private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题。

匿名用户
2013-12-13
展开全部
OPENSSL库
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式