欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

程序员文章站 2022-08-04 16:58:46
这一章呢,我们来看看java如何实现rsa。 啊?为什么?要想比较差别,当然得看看人家怎么加密的。 前面只讲了c#怎么实现rsa加密解密,签名验签,有关java的也只是讲了如何去生成pem格式公钥私...

这一章呢,我们来看看java如何实现rsa。

啊?为什么?要想比较差别,当然得看看人家怎么加密的。

前面只讲了c#怎么实现rsa加密解密,签名验签,有关java的也只是讲了如何去生成pem格式公钥私钥以及怎么转化,但是并没有讲解到java与c#签名时候的注意点,尤其是对接。

这里就要说到本文的由来,对接一个项目,对方公司程序为java语言编写,我司程序为c#语言编写,对方提供的对接demo中.net程序居然无法正常运行,于是,我就找到对方技术人员提供可用的示例对接demo,对方技术人员来了一句”我不懂.net”。没毛病,我也不懂java,我知道那种痛。所以为了不让更多人痛,我就写了这边文章。

这里提供一段java代码,作用是实现rsa签名(真特么难啊,为了一个base64转码,搜了一上午解决方案)

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

箭头所指,是签名时候使用的算法,在c#中是没有"md5withrsa"这样的写法的,所以在这里提供一个参照表,在使用我写的加密帮助类时,的对应关系。

java签名时

c#/.net(签名枚举选择)

md5withrsa

encrypttype.md5

sha1withrsa

encrypttype.sha1

sha256withrsa

encrypttype.sha256

sha384withrsa

encrypttype.sha384

sha512 withrsa

encrypttype.sha512

签名验证代码:(对应关系如同上表)

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

顺便提供一下java实现rsa加密的方法:

加载公钥私钥(签名时候用的,前面忘了写了...):

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

实现加密解密(公钥加密,私钥解密):

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

ASP.NET(C#)-JAVA对接RSA加密签名-第三讲

测试方法:

使用运行java代码加密,然后在c#中进行解密

使用java签名数据,然后再c#中进行验证签名

注意过程中秘钥不要混淆,这里java使用的pcks8填充加密,所以在c#中生成的秘钥记得先转化为pcks8填充模式的秘钥。