要求在.Net端生成公钥私钥对。

然后在.Net端使用RSA公钥加密;在Linux端使用RSA私钥解密。

最初的尝试是:.Net端使用RSACryptoServiceProvider; linux端使用OpenSSL

搞了整整5个小时,有木有啊,有木有啊! .Net的RSA和OpenSSL对不上,有木有啊,有木有啊!

人都搞晕了就是对不上。最后解决方式换成了,.Net端使用 OpenSSL.NET.

.Net端代码

  1. string publicKeyFile = context.Server.MapPath("~/App_Data/public.pem");
  2. using( RSA rsa = RSA.FromPublicKey(BIO.File(publicKeyFile, "r")) )
  3. {
  4. buffer = rsa.PublicEncrypt( buffer, RSA.Padding.OAEP);
  5. encryptedKey = Convert.ToBase64String(buffer);
  6. }

Linux端代码

    1. BIO *b64, *bmem;
    2. // Base64解码
    3. unsigned char *buffer = (unsigned char *)malloc(length);
    4. memset(buffer, 0, length);
    5. b64 = BIO_new(BIO_f_base64());
    6. BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
    7. bmem = BIO_new_mem_buf(szKey, length);
    8. bmem = BIO_push(b64, bmem);
    9. int len = BIO_read(bmem, buffer, length);
    10. BIO_free_all(bmem);
    11. // 加载私钥
    12. BIO * key = NULL;
    13. RSA * r = NULL;
    14. key = BIO_new(BIO_s_file());
    15. BIO_read_filename(key,  "/val/XXX/private.pem" );
    16. r = PEM_read_bio_RSAPrivateKey(key, NULL, NULL, NULL);
    17. BIO_free_all(key);
    18. unsigned char * plainText = (unsigned char *)malloc(len);
    19. memset( plainText, 0, len);
    20. // 解密
    21. int ret = RSA_private_decrypt( RSA_size(r), buffer, plainText, r, RSA_PKCS1_OAEP_PADDING);
    22. RSA_free(r);
    23. free(plainText);
    24. free(buffer);

http://blog.csdn.net/wangjia184/article/details/6941242

OpenSSL RSA加解密 (.Net公钥加密/ Linux端私钥解密)的更多相关文章

  1. openssl - rsa加解密例程

    原文链接: http://www.cnblogs.com/cswuyg/p/3187462.html openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加 ...

  2. openssl rsa 加解密

    <h4>1.openssl进行rsa加密解密</h4>首先介绍下命令台下openssl工具的简单使用:生成一个密钥:<pre lang="c" esc ...

  3. PHP使用OPENSSL RSA加密解密数据

    加密数据有很多种方法,今天我们来看一下OPENSSL RSA的加密办法. 1.首先得安装php的openssl扩展 php -m | grep openssl 执行以上命令,确保已经安装了openss ...

  4. PHP RSA加解密示例(转)

    1.生成密钥和公钥 开始前需要准备openssl环境 linux 需要安装openssl工具包,传送门http://www.openssl.org/source/ window 下需要安装openss ...

  5. RSA加解密&RSA加验签详解

    RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一.RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已 ...

  6. Java前端Rsa公钥加密,后端Rsa私钥解密(目前还不支持中文加密解密,其他都行)

    Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...

  7. RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...

  8. Java前端Rsa公钥加密,后端Rsa私钥解密(支持字符和中文)

    Base64工具类,可以让rsa编码的乱码变成一串字符序列 package com.utils; import java.io.ByteArrayInputStream; import java.io ...

  9. sslopen RSA加解密

    一.  原理概念 OpenSSL定义: OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其 ...

随机推荐

  1. mariadb远程不能访问,出现Can't connect to MySQL server on '' (10061)

    一,现象: 1. 1 远程连接数据库mariadb时,报错 二,定位: 2. 1  首先本地连接上数据库,然后操作权限表数据 ,然后远程再次连接依然连接不上: 2. 2   搜索mariadb的配置文 ...

  2. DC综合:划分与编码风格

    划分与编码风格 合理的设计划分和好的HDL编码风格对成功的综合影响很大. 逻辑划分是成功综合(和布局布线,如果布图是层次化的)的关键. 综合划分 "分而治之" 把复杂的设计化简为更 ...

  3. Loader之一:基本原理 分类: H1_ANDROID 2013-11-16 10:29 1923人阅读 评论(0) 收藏

    参考APIDEMO及http://developer.android.com/guide/components/loaders.html#app 1.Introduced in Android 3.0 ...

  4. 转载:使用bat命令来快速安装和卸载Service服务

    一般我们在编写完Service服务程序后,都是通过cmd命令提示窗口来安装或卸载服务,但频繁的在cmd窗口中去“拼”文件的路径着实让人“不能忍”.所以,我们需要一钟“更快捷”的方式来进行安装或者卸载操 ...

  5. 在ArcEngine中使用Geoprocessing工具-执行工具

    转自原文在ArcEngine中使用Geoprocessing工具-执行工具 来解析一下Geoprocessor类的Execute方法,他有两种重载,Execute(IGPProcess, ITrack ...

  6. java判断字符串是否为数字

    我们在做安卓开发中,一定会遇到判断某字符串是否是数字的问题,本文使用正则表达式可以很方便的判断出来,希望本文对安卓开发者有所帮助.   1 public boolean isNumeric(Strin ...

  7. 常用服务器ftp、ssh

    1. Linux常用服务器构建-ftp服务器 ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议". 用于Int ...

  8. 【a703】求逆序对(线段树的解法)

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定一个序列a1,a2...an.如果存在i小于j 并且ai大于aj,那么我们称之为逆序对,求给定序列中逆序 ...

  9. C++常用数据结构的实现

    常用数据结构与算法的实现.整理与总结 我将我所有数据结构的实现放在了github中:Data-Structures-Implemented-By-Me 常用数据结构与算法的实现.整理与总结 KMP字符 ...

  10. html5常用属性text-shadow、vertical-align、background如何使用

    html5常用属性text-shadow.vertical-align.background如何使用 一.总结 一句话总结: 1.text-shadow:[x轴(X Offset) y轴(Y Offs ...