ios客户端RSA公钥加密 .net后台私钥解密解决方案(基于Openssl)

1.需要后台提供.pem格式的Openssl公钥文件,也可以自己制作。具体请参考:http://www.qmailer.net/archives/216.html(OpenSSL密钥相关命令

char *my_encrypt(const char *str,const char *path_key){

char *p_en;

RSA *p_rsa;

FILE *file;

int flen,rsa_len;

if((file=fopen(path_key,"r"))==NULL){

perror("open key file error");

return NULL;

}

if((p_rsa=PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL))==NULL){

//if((p_rsa=PEM_read_RSAPublicKey(file,NULL,NULL,NULL))==NULL){

ERR_print_errors_fp(stdout);

return NULL;

}

NSString * plainString = @"plainString";

int len = (int) [plainString length];//待加密字母串长度

unsigned char *plainBuffer = (unsigned char *) [plainString UTF8String];

int clen = RSA_size(p_rsa);

unsigned char *cipherBuffer = calloc(clen, sizeof(unsigned char));

RSA_public_encrypt(len, plainBuffer, cipherBuffer, p_rsa, RSA_PKCS1_PADDING);

return cipherBuffer;

}

2.也可以尝试:

- (NSString *)encryptWithString:(NSString *)content

{

NSData *publicKey = [NSData dataFromBase64String:RSA_KEY_BASE64];

NSData *usernamm = [content dataUsingEncoding: NSUTF8StringEncoding];

NSData *newKey= [SecKeyWrapper encrypt:usernamm publicKey:publicKey];

NSString *result = [newKey base64EncodedString];

return result;

}

参考链接:http://www.cnblogs.com/aLittleBitCool/archive/2011/09/22/2185418.html

http://www.qmailer.net/archives/216.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 07:53:41

ios客户端RSA公钥加密 .net后台私钥解密解决方案(基于Openssl)的相关文章

OpenSSL RSA加解密 (.Net公钥加密/ Linux端私钥解密)

要求在.Net端生成公钥私钥对. 然后在.Net端使用RSA公钥加密:在Linux端使用RSA私钥解密. 最初的尝试是:.Net端使用RSACryptoServiceProvider; linux端使用OpenSSL 搞了整整5个小时,有木有啊,有木有啊! .Net的RSA和OpenSSL对不上,有木有啊,有木有啊! 人都搞晕了就是对不上.最后解决方式换成了,.Net端使用 OpenSSL.NET. .Net端代码 string publicKeyFile = context.Server.Ma

Android和IOS关于RSA加密以及服务端解密的研究实现

一.  密钥对的生成 RSA加密解密,类似于支付宝中的加解密功能,以前的app使用的是DES加密即对称加密算法,只需要一个密钥:而采用RSA实现加解密需要一个密钥对,即公钥和私钥.所以首先要做的操作是生成一个密钥对,在window 7环境下,这里借用支付宝demo中的openssl命令行工具,毕竟是通用的,密钥对的生成流程大致如下: 1.生成RSA私钥 <span style="white-space:pre"> </span>genrsa -out rsa_p

Python rsa公私钥生成 rsa公钥加密(分段加密)私钥加签实战

一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题.一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的公钥,你们就可以进行加密和签名的验证了. 先来看下两种在linux或者mac下面生成key pair的方法: 使用openssl 生成一把2048bit长度的钥匙对,首先我们生成一把.pem格式的私钥: openssl genrsa -out private_key.pem 2048 然后通过这把私

linux网络数据传输的加密,解密以及基于openssl的私有CA的建立

网络数据传输的安全性是计算机通信领域的重要课题,数据加密就是保证数据安全性的主要方法.所谓数据加密,即是通过某种算法和秘钥对数据明文进行处理,从而得到密文的过程.计算机网络通信过程中的加密形式主要有以下几种: 1,对称加密,用同一个密钥对信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密.对称加密算法的优点是算法公开.计算量小.加密速度快.加密效率高,但秘钥有时会很多,难以管理.而且秘钥交换又是一个难以解决的问题. 常见算法: DES:Data Encryption Standard,

开源中国iOS客户端学习

开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html 开源中国iOS客户端学习——序 说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区.传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现.使用.并交流开源技术的平台.目前开源中国社区已收

Java实现RSA密钥对并在加解密、加签验签中应用的实例

一.项目结构 二.代码具体实现 1.密钥对生成的两种方式:一种生成公钥私文件,一种生成公钥私串 KeyPairGenUtil.java package com.wangjinxiang.genkey.util; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.security.Key; import java.security.KeyPair; import java.security

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

加密、解密原理和openssl自建CA

openssl协议简介 SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准.一般情况下的网络协议应用中,数据在机器中经过简单的由上到下的几次包装,就进入网络,如果这些包被截获的话,那么可以很容易的根据网络协议得到里面的数据. SSL就是为了加密这些数据而产生的协议,可以这么理解,它是位与应用层和TCP/IP之间的一层,数据经过它流出的时候被加密,再往TCP/IP送,而数据从TCP/IP流入之后先进入它这一层被解密,同时它也能够验证网络连接俩端

java RSA公钥加密,私钥解密算法例子

"非对称加密算法". (1)乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. (2)甲方获取乙方的公钥,然后用它对信息加密. (3)乙方得到加密后的信息,用私钥解密. 如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的.公钥用于加密, 私钥用于解密. RSA 是一种非对称加密算法,一般很难破解,因此一些要求比较高的系统通常会采用rsa加密算法,一般来说用RSA加密有如下几个步骤. 1. 生成公钥与私钥 2. 用公钥对需要加密的字符串等进