c#中使用openssl

近期使用加密狗对软件进行加密,但是软件用的c#,这就比较坑了,因为c#自带的System.Security.Cryptography只支持c#格式的公钥加密私钥解密,而现在需要私钥加密公钥解密。于是网上进行资料查找,一堆资料说的都是使用BouncyCastle,但是。。。。。。没有使用不同格式的密文啊喂,你们有考虑过c#的孤独吗?

经过对结构体的分析,发现还是有些共通的地方,比如要有Modulus和Exponent,当然是对公钥来说,然后各种调用,生成公钥,一波操作猛如虎,回头一看二百五啊。。。。。。没人跟我说密文格式的不同啊喂。又是一顿搜索,知道了c#的rsa密文是xml格式的,不是简单的base64的,需要转换,咋办?我想了个办法,先用c#自带的加解密生成一个公私钥对,然后就知道格式了啊对不对,按照这个格式,我将openssl里的公钥拼凑进去,得到一个xml格式的公钥,再通过c#自带的解xml公钥,得到rsa信息,再生成base64格式的公钥串,啊哈,竟然成功了,神奇不?

xml公钥格式大概是这样的:

string strPubKey = "<RSAKeyValue><Modulus>" + str64Modulus + "</Modulus><Exponent>" + str64Exponent + "</Exponent></RSAKeyValue>";

转换xml格式公钥:

public static string FromXmlPublicKey(string xmlPublicKey)
        {
            string result = string.Empty;
            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
            {
                rsa.FromXmlString(xmlPublicKey);
                RSAParameters p = rsa.ExportParameters(false);
                RsaKeyParameters keyParams = new RsaKeyParameters(
                    false, new BigInteger(1, p.Modulus), new BigInteger(1, p.Exponent));
                SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keyParams);
                result = Convert.ToBase64String(publicKeyInfo.ToAsn1Object().GetEncoded());
            }
            return result;
        }

用公钥解密:

public static string DecryptPublicKey(string publicKey, string data)
        {
            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
            byte[] cipherbytes = Convert.FromBase64String(data);
            RsaEngine rsa = new RsaEngine();
            rsa.Init(false, publicKeyParam);
            cipherbytes = rsa.ProcessBlock(cipherbytes, 0, cipherbytes.Length);
            return Convert.ToBase64String(cipherbytes, 0, cipherbytes.Length);
        }

以上,问题解决,如果大家有更好的办法,希望留言,没有人写相关的东西,所以我粗略的写了点,不对的请指出,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于忆阻器的神经网络应用研究

来源&#xff1a;文章转载自期刊《微纳电子与智能制造》&#xff0c;作者&#xff1a;陈 佳&#xff0c;潘文谦&#xff0c;秦一凡&#xff0c;王 峰&#xff0c;李灏阳&#xff0c;李 祎&#xff0c;缪向水。摘 要基于忆阻突触器件的硬件神经网络是神经形态计算的重要发展方向…

CORS预检请求详谈

引言 最近在项目中因前后端部署不同地方&#xff0c;前端在请求后端api时发生了跨域请求&#xff0c;我们采用CORS(跨域资源共享)来解决跨域请求&#xff0c;这需要前后端的配合来完成。在这一过程中&#xff0c;后端支持了CORS跨域请求后&#xff0c;前端的请求配置可能会调起…

安装vs2019导致vs2017打开项目失败

工作要求参与某项目&#xff0c;但是需要安装vs2019&#xff0c;于是乎下载安装&#xff0c;开项目干活&#xff0c;等工作完成后&#xff0c;继续维护之前的项目&#xff0c;这时发现项目打开失败&#xff0c;不能加载&#xff0c;因为这个项目一直用的vs2017&#xff0c;之前…

制胜人工智能时代——企业人工智能应用现状分析(第三版)

全文共计300字25图&#xff0c;预计阅读时间9分钟来源 | 德勤Deloitte&#xff08;转载请注明来源&#xff09;编辑 | 张77当前&#xff0c;现今一代人工智能技术的应用正在展开新的篇章。我们可以看到&#xff0c;人工智能已被广泛部署于各类用例&#xff0c;以解决不同业务问…

Tomcat启动时项目重复加载,导致资源初始化两次的问题

最近在项目开发测试的时候&#xff0c;发现Tomcat启动时项目重复加载&#xff0c;导致资源初始化两次的问题导致该问题的原因&#xff1a;如下图&#xff1a;在Eclipse中将Server Locations设置为“Use Tomcat installation(takes control of Tomcat installation)”时&#xf…

c++中vector使用的小问题

接手项目原有代码&#xff0c;在昨天接到bug提示&#xff0c;一条数据处理时程序崩溃&#xff0c;于是有了这个查找问题的小总结。 gdb调试时问题定位到&#xff1a;malloc(): smallbin double linked list corrupted&#xff0c;然后看了那块儿的代码&#xff0c;并没有发现有…

论文速递:通过模拟大脑-解决深度学习中的灾难性遗忘

来源&#xff1a;混沌巡洋舰灾难性遗忘指的是&#xff1a;不像人类&#xff0c;当深度学习模型被训练完成新的任务时&#xff0c;他们很快就会忘记以前学过的东西。8月13号的自然通讯论文Brain-inspired replay for continual learning with artificial neural networks&#x…

Java中bytebuffer和string的转换记录

原文地址&#xff1a;https://stackoverflow.com/questions/17354891/java-bytebuffer-to-string byte[] bytes k.getBytes( StandardCharsets.UTF_8 ); String v new String( bytes, StandardCharsets.UTF_8 ); String s StandardCharsets.UTF_8.decode(byteBuffer).toStr…

python 调用c++库接口出错

首先&#xff0c;python使用c库传数据的部分方法在我之前的小心得里有&#xff1a;python调用c的库传递二级指针&#xff0c;希望有帮到大家。 今天说一下c的接口里使用智能指针shared_ptr接收数据的问题&#xff0c;接口都是使用的指针传递数据&#xff0c;原本的想法很简单&a…

批量执行命令(SSH)

for a in {1..6} ; do scp /etc/hosts enc-bigdata0$a:/etc/hosts ; done转载于:https://www.cnblogs.com/net2817/p/8057409.html

蒲慕明院士PNAS最新研究:神经元数量在共同激活诱导大脑神经元兴奋性增强的重要性...

来源&#xff1a;brainnews2020年8月3日&#xff0c;中国科学院脑科学与智能技术卓越创新中心(神经科学研究所)、上海脑科学与类脑研究中心、神经科学国家重点实验室蒲慕明研究组在《Proceedings of the National Academy of Sciences》杂志在线发表了题为《同步激活大量神经元…

搭建opencv环境

有个测试项目&#xff0c;需要opencv环境&#xff0c;于是搭建一个&#xff0c;但是这个项目又需要python3.6以上&#xff0c;ubuntu服务器上是3.5&#xff0c;需要升级&#xff0c;这个比较简单&#xff0c;我直接升级到了3.7&#xff1a; sudo apt-get install python3.7然后…

用源生的JavaScript编写一个异步的ajax库

用源生的JavaScript写一个ajax的库&#xff0c;这样就不用每次都调用jQuery库了&#xff0c;依据ajax请求的步骤写&#xff0c;ajax请求有四个步骤:1.创建一个ajax对象&#xff0c;2.跟服务器进行连接&#xff1b;3.发送请求&#xff1b;4.接收返回值。 直接创建一个ajax的函数…

一文读懂什么是数字孪生?

文章转载自微信公众号数字孪生大赛&#xff0c;版权归原作者及刊载媒体所有。一、数字孪生的概念从理论的概念来看&#xff0c;Digital Twin数字孪生:是充分利用物理模型、传感器更新、运行历史等数据&#xff0c;集成多学科、多物理量、多尺度、多概率的仿真过程&#xff0c;在…

Error:collect2:ld returned 1 exit status的其他原因

首先感谢&#xff1a;https://blog.csdn.net/li809735472/article/details/85231950&#xff0c;这里有多个总结&#xff0c;虽然没解决我的问题&#xff0c;但是可能帮到别人&#xff0c;所以引用到这里。 我自己使用vs的Linux插件&#xff0c;直接在Linux服务器编译程序&…

第五轮学科评估再提“破五唯”

来源&#xff1a;中国科学报作者&#xff1a;袁一雪近日&#xff0c;教育部官网公布了对《关于完善高校学科评估制度&#xff0c;促进教育治理体系和能力现代化的提案》的答复&#xff0c;提到学科评估坚决破除“五唯”顽疾。评价教师不唯“学历”和“职称”&#xff0c;不设置…

psycopg2.errors.UndefinedTable: relation “xxxx“ does not exist

psycopg2.errors.UndefinedTable: relation “xxxx” does not exist python连接PostgreSQL之后&#xff0c;查找操作报错如题&#xff0c;原因是数据库表名是有大写字母&#xff0c;需要在表名上加入双引号&#xff0c;因为PostgreSQL大小写不敏感。比如&#xff1a;‘select …

机器学习专业名词中英文对照

activation 激活值 activation function 激活函数 additive noise 加性噪声 autoencoder 自编码器 Autoencoders 自编码算法 average firing rate 平均激活率 average sum-of-squares error 均方差 backpropagation 后向传播 basis 基 basis feature vectors 特征基向量 batch …

MEMS惯性传感器有哪些趋势?

来源&#xff1a;半导体产业基金整理如何在灾难救援中&#xff0c;精准定位受困人员的位置&#xff1f;如何在无人机操作中&#xff0c;提高系统精度&#xff1f;如何在人机交互中&#xff0c;更好的实现动作检测和姿势识别&#xff1f;如何在自动驾驶中&#xff0c;做到更精确…

类似collect2: ld returned 1 exit status的错误

今天帮忙处理一个链接问题&#xff0c;使用vs2015编译&#xff0c;链接时报错&#xff1a;collect2: ld returned 1 exit status以及not found (try using -rpath or -rpath-link)。 首先想到的是在linker部分添加第三方库目录&#xff0c;以往这样都能解决大部分类似问题&…