首页 > 编程语言 >关于C#的RSA加密(用于泛微OA)

关于C#的RSA加密(用于泛微OA)

时间:2023-12-04 14:13:17浏览次数:30  
标签:Convert 公钥 加密 string C# RSA OA spk

由于项目需要,需要用公钥对秘钥进行加密,且对接系统用C#开发,需求是这样的:

 

 

注册许可证时返回的公钥spk对秘钥信息secrit进行加密。

由于公钥spk是字符串,但C#中只认可的xml字符串的公钥才能够进行加密,可以使用以下方法,先进行转换,将公钥字符串转换成XML,再进行加密,就可以得到加密后的字符:

        public static string RSAEncrypt(string spk, string secrit)
        {
            string PublicKey = RSAPublicKey(spk);
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] cipherbytes;
            rsa.FromXmlString(PublicKey);
            cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(secrit), false);
 
            return Convert.ToBase64String(cipherbytes);
        }
 
        public static string RSAPublicKey(string publicKey)
        {
            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey));
            string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
            Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
            Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
            return XML;
        }

 


想要从字符串的pem公钥转为xml公钥,只能依赖于一个第三方库,叫做BouncyCastle,在vs中使用NuGet包管理器安装一下,就可以使用。
————————————————
原文链接:https://blog.csdn.net/cnwfnyd/article/details/132433576

标签:Convert,公钥,加密,string,C#,RSA,OA,spk
From: https://www.cnblogs.com/chengqianqian/p/17874777.html

相关文章

  • [LeetCode] 1266. Minimum Time Visiting All Points
    Ona2Dplane,therearenpointswithintegercoordinatespoints[i]=[xi,yi].Returntheminimumtimeinsecondstovisitallthepointsintheordergivenbypoints.Youcanmoveaccordingtotheserules:In1second,youcaneither:moveverticallyb......
  • vulnhub-Pinky's Palace v3
    在夏令营做的一个靶机,还是挺有意思的,也就做了我一天而已(菜没办法),这个靶机是当时夏令营老师布置的一道题,但是后面实在不会做就去网上搜了wp,才知道原型是Pinky'sPalacev3。Pinky'sPalacev3(flag在文章尾)打开靶机和kali,将靶机和kali设为同一网段。nmap扫到靶机ip为kali:192.16......
  • python实现Excel指定区域截图
    方法一:xlwingsimportos.pathimporttimeimportuuidfromioimportBytesIOfromtypingimportUnionimportxlwingsasxwfromPILimportImageGrabdefexcel_grab(excel_path,sheet_name:Union[str,int]=0,cell_area=None,pic_path=None,visible=False,......
  • C++/Filesystem 文件类型
    #include<iostream>#include<filesystem>#include<string>namespacefs=std::filesystem;voiddemo_status(constfs::path&p,fs::file_statuss){std::cout<<p;switch(s.type()){casefs::file_type::none:......
  • 简化版Transformer :Simplifying Transformer Block论文详解
    前言 本文探讨了来自苏黎世联邦理工学院计算机科学系的BobbyHe和ThomasHofmann在他们的论文“SimplifyingTransformerBlocks”中介绍的Transformer技术的进化步骤。这是自Transformer开始以来,我看到的最好的改进。本文转载自DeephubImba作者|FreedomPreetham仅用于学......
  • 国际化-语言代码表-Language Codes
    afAfrikaans南非语af-ZAAfrikaans(SouthAfrica)南非语af Afrikaans 南非语af-ZA Afrikaans(SouthAfrica) 南非语ar Arabic 阿拉伯语ar-AE Arabic(U.A.E.) 阿拉伯语(阿联酋)ar-BH Arabic(Bahrain) 阿拉伯语(巴林)ar-DZ Arabic(Alge......
  • C++U3-第3课-结构体
    上节课作业:链接:https://pan.baidu.com/s/1fBx8bS-J_FPDqBzn6Omp-g?pwd=1rn5提取码:1rn5学习目标在C++中,结构体(Struct)是一种用于组合多个相关数据项的自定义数据类型。结构体可以包含不同类型的成员变量和成员函数,并且可以通过.运算符来访问和操作它们。结构体在C++中具有以下......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-35-处理web页面定位toast-上篇
    1.简介在使用appium写app自动化的时候介绍toast的相关元素的定位,在WebUI测试过程中,也经常遇到一些toast(出现之后一闪而过,不留下一点点痕迹),那么这个toast我们这边如何使用playwright进行定位测试呢?今天宏哥就分两篇介绍一下。2.什么是toast?Android中的Toast是一种简易的消......
  • TPC-DS工具介绍及性能测试
    一. Hive-testbench工具介绍TPC-DS:https://www.cnblogs.com/webDepOfQWS/p/10544528.html由于原生态工具生产测试数据表存在bug,后续引进hive-testbench,可参考:https://bbs.huaweicloud.com/blogs/260840可在WPS共享文档https://yundoc.fin-shine.com/drive/group/442074/325659......
  • C# winform 获取屏幕分辨率缩放率,获取屏幕设置分辨率
    解决问题:1)当需要抓取显示器分辨率的缩放比例时。2)当屏幕显示缩放设置不等于100%,导致分辨率改变,Screen.PrimaryScreen.Bounds抓取不到实际设置的分辨率时。解决方案:使用GetDeviceCaps函数。///<summary>///设备数据函数///</summary>///......