首页 > 编程语言 >.Net 对RSA加密结果跟JAVA加密结果不一致问题处理

.Net 对RSA加密结果跟JAVA加密结果不一致问题处理

时间:2023-07-19 17:35:56浏览次数:47  
标签:Convert JAVA string buffer RSA value 加密

string publicRsaKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6UCsvO/M/Q51ydlxvuvwy8W9yXkAWLLiG5eA2Duha9cr/XoWrQcETf7PRMNYaQs616PGhj0tnPfxfDltmeqTJQf8rHNxevIZ9nQ0N0/8PIlVszubpMyAHnEis2OLMnLENGyepAlabFGDMDPzRpf0ibL0Q/R15BuTzII5gunzAbwIDAQAB";

string RsaEncrypt(string value, bool usePkcs8 = false) { if (string.IsNullOrEmpty(value)) return value; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048); rsa.FromXmlString(RSAPublicKeyJava2DotNet(publicRsaKey));//将公钥导入到RSA对象中,准备加密; var buffer = Encoding.UTF8.GetBytes(value); buffer = rsa.Encrypt(buffer, false); return Convert.ToBase64String(buffer); } /***************以下是java提供的公私钥转成.net公私钥XML的方式*************************************/ /// <summary> /// RSA公钥格式转换,java->.net /// </summary> /// <param name="publicKey">java生成的公钥</param> /// <returns></returns> string RSAPublicKeyJava2DotNet(string publicKey) { RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKey)); return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()), Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned())); }

标签:Convert,JAVA,string,buffer,RSA,value,加密
From: https://www.cnblogs.com/SmallChen/p/17566255.html

相关文章

  • Android开发RXJava
    Android开发RXJava实现流程下面是实现"Android开发RXJava"的流程表格:步骤描述1导入RxJava库2创建Observable对象3创建Observer对象4使用subscribe()方法订阅Observable和Observer下面将详细介绍每个步骤需要做的事情以及对应的代码和注释。步骤1:导入R......
  • JAVA 内部类
    Java类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。 静态内部类定义在类内部的静态类,就是静态内部类。1publicclassOut{2privatestaticinta;3......
  • Java 默认构造
    Java默认构造方法的实现作为一名经验丰富的开发者,你将帮助一位刚入行的小白了解如何实现Java中的默认构造方法。在本篇文章中,我们将按照以下步骤来进行讲解:创建一个Java类添加默认构造方法编写构造方法的代码逻辑让我们一步一步地来实现这些步骤。1.创建一个Java类首先,......
  • Java 两个字符串相加
    Java两个字符串相加作为一名经验丰富的开发者,我很乐意教你如何实现“Java两个字符串相加”。下面我将详细介绍这个过程,并提供每个步骤所需的代码和注释。过程概述下面是实现“Java两个字符串相加”的步骤概览:步骤描述1创建两个字符串变量2输入两个待相加的字......
  • Java 静态初始化创建
    Java静态初始化创建简介静态初始化是一种在声明变量时直接初始化的方式,它可以在不创建对象的情况下对变量进行初始化。本文将介绍如何使用Java静态初始化创建变量的步骤和相应的代码示例。步骤下面是创建Java静态初始化变量的步骤。步骤描述1声明一个静态变量。2......
  • 用Ant实现Java项目的自动构建和部署
    是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。一.             安装与配置下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如......
  • Java 获取上月年月
    Java获取上月年月在Java中,如何获取上个月的年份和月份呢?本文将通过示例代码详细介绍几种方法。方法一:使用Calendar类Java中的Calendar类提供了获取日期和时间的各种方法,包括获取当前日期、增加或减少日期、获取特定日期等。我们可以使用Calendar类来获取上个月的年份和月份。i......
  • Java包机制
    包机制-为了更好地组织类,Java提供了包机制,用于区别类名的命名空间-包语句的语法格式为packagepkg1[.pkg2[.pkg3...]]-一般利用公司域名倒置作为包名www.baidu.comcom.baidu.www-为了能够使用某个包的成员,我们需要在Java程序中明确导入该包,使用"import"语句即可-......
  • Java学习day05~06: 面向对象
    我在B站上大学......
  • Java运算符
    Java运算符-Java语言支持如下运算符:优先级()1算术运算符:+,-,*,/,%,++,--,2赋值运算符:=3关系运算符:>,<,>=,<=,==,!=instanceof4逻辑运算符:&&,||,!5位运算符:&,|,^,~,>>,<<,>>>(了解)6条件运算符:?:7扩展赋值运算符:+=,-=,*=,/=pa......