`
tempsitegoogle
  • 浏览: 867949 次
文章分类
社区版块
存档分类
最新评论

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.MapPath("~/App_Data/public.pem");
        using( RSA rsa = RSA.FromPublicKey(BIO.File(publicKeyFile, "r")) )
        {
            buffer = rsa.PublicEncrypt( buffer, RSA.Padding.OAEP);
            encryptedKey = Convert.ToBase64String(buffer);
        }


Linux端代码

BIO *b64, *bmem;

// Base64解码
unsigned char *buffer = (unsigned char *)malloc(length);
memset(buffer, 0, length);

b64 = BIO_new(BIO_f_base64());
BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
bmem = BIO_new_mem_buf(szKey, length);
bmem = BIO_push(b64, bmem);
int len = BIO_read(bmem, buffer, length);
BIO_free_all(bmem);


// 加载私钥
BIO * key = NULL; 
RSA * r = NULL; 
key = BIO_new(BIO_s_file()); 
BIO_read_filename(key,  "/val/XXX/private.pem" ); 
r = PEM_read_bio_RSAPrivateKey(key, NULL, NULL, NULL); 
BIO_free_all(key);


unsigned char * plainText = (unsigned char *)malloc(len);
memset( plainText, 0, len);

// 解密
int ret = RSA_private_decrypt( RSA_size(r), buffer, plainText, r, RSA_PKCS1_OAEP_PADDING);
RSA_free(r);


free(plainText);
free(buffer);



分享到:
评论

相关推荐

    openssl RSA加解密例子

    基于openssl写的RSA的公钥加密,私钥解密,私钥加密,公钥解密的测试例子,密钥类型是rsa1024的PEM格式。

    基于OpenSSL的RSA加解密的C语言实现

    2.该程序具有生成RSA密钥对、RSA公钥加密和RSA私钥解密的功能,支持手动输入密钥; 3.该程序支持不限长度的明文加密,支持256~4096长度的密钥,支持Crypto++密码库生成的RSA密钥对(公钥:X.509,私钥:PKCS#8); 4...

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973

    c++通过openssl实现rsa加密解密【windows版】

    c++通过使用openssl实现rsa加密解密算法,网上有很多文章和例子,但是大部分都是linux版的,并且内容不全、代码老旧等各种问题,导致最后无法调试,这里提供的源码是用code::blocks编写的c++源码,可以直接运行...

    QT RSA 公钥加密 公钥解密 私钥加密 私钥解密 分段加密 分段解密

    推荐在线完成RSA加密解密的网站:https://the-x.cn/cryptography/Rsa.aspx 可以用VS打开.sln文件也可以用QT编辑器打开.pro文件 文件中虽然有RSATool.cpp的文件,但是程序中使用动态库的形式引入的 如果你想分步调试...

    Delphi RSA加密解密代码

    1、支持公钥加密、解密,私钥加密解密。 2、支持PKCS1和PKCS8两种密钥格式。 3、支持PKCS#1 v1.5、PKCS#1 OAEP、SSL v2等填充方式。 4、支持生成密钥对。 5、支持将文本加密为Base64或Hex格式。 注意此代码引用了...

    C++使用Openssl进行RSA加密解密及签名验签功能(SHA256)

    使用Openssl实现RSA的加密和解密过程;使用Openssl实现签名和验签过程;SHA256WithRSA签名验签过程;封装很好,一看就懂,直接使用!

    [CryptAPI]纯windowsAPI计算AES/DEA/3DES,RSA加密解密,RSA签名验签,HMAC,散列等

    RSA公钥加密/私钥解密。RSA签名/验签。各种散列:MD2/MD4/MD5,SHA/SHA1/SHA256/SHA384/SHA512。HMAC算法,支持 hmac-md5 hmac-sha1 hmac-sha256 hmac-384 hmac-sha512。PEM文件纯易语言解析,载入,导出。FPX文件...

    javaRSA加密C++RSA解密

    Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍 项目: JAVA生成的RSA的密文,通过C++来解密。 RSA这里就不多介绍了大家自己去看。 JAVA也是通过包来实现加密和解密的,那么我的C++是通过OPENSSL的库来实现的...

    OpenSSL RSA 非对称加密(VS2013,C++实现)

    生成密钥及加密解密选择密钥时不支持中文路径 其它都已经实现。 C++代码,VS2013做的mfc程序, 调用openssl库的RSA算法实现非对称加密 公钥加密,私钥解密(私钥解密时需要密码) 支持大文件

    OpenSSL加密解密库

    Openssl头文件以及lib库文件用于VS2013,其他的vs版本未测试,下载的时候请务必看清楚,本人github上的md5,rsa加密解密,des加密解密用的是此版本,都是vs2013测试通过。

    vs2013实现OpenSSL RSA算未能非对称加密

    生成密钥及加密解密选择密钥时不支持中文路径 其它都已经实现。 C++代码,VS2013做的mfc程序, 调用openssl库的RSA算法实现非对称加密 公钥加密,私钥解密(私钥解密时需要密码) 支持大文件

    e语言-[CryptAPI]纯windowsAPI计算AES/DEA/3DES,RSA加密解密,RSA签名验签,HMAC,散列等

    资源介绍:这次就不用openssl了直接用windows自带的加密库实现各种加密运算支持的算法:AES、DES、3DES 的(ECB/CBC/OFB/CFB/CTS 模式)RC2 RC4RSA密钥对生成RSA公钥加密/私钥解密RSA签名/验签各种散列:MD2/MD4/MD5...

    Windows版 生成RSA公钥和私钥的工具

    生成RSA公钥和私钥的工具:Windows版OpenSSL 亲测可用。提供32位系统和64位系统版本

    php pki加密技术(openssl)详解

    扩展/*pki模式是 * 公钥加密,私钥解密; * 私钥加密,公钥解密; *///私钥加密,公钥解密//客户端//$data数据$data = ‘abcd’;//获取私钥 $priv_key_id$priv_key_id = openssl_get_privatekey(file_get_...

    调用openssl实现RSA加解密-易语言

    因为需要的内容不多,主要是RSA加解密部分,所以就删除了不必要的,公钥私钥pem需要...回来实际使用中,本地保存公钥,发送数据时候数据公钥加密过,然后在服务器端用私钥解密,数据合法再处理,这样数据就安全啦。。。

Global site tag (gtag.js) - Google Analytics