日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

RSA的密钥把JAVA格式转换成C#的格式

發布時間:2025/4/14 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSA的密钥把JAVA格式转换成C#的格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RSA算法在C#與JAVA之前的交互

? ?在JAVA生成一對RSA私鑰和公鑰的時候,是以下的形式給到C#去調用:

string?publickey = @"MIGfMA0GCSqGSIb4DQEBAQUAA4GNADCBiQKBgQC/M9kJVwi+sO672NBm5fAEbUEl2PqRFuYZVB5ZrKah7eJPP0pKBe/eoA6pOMsjnKFoZGVizz7oCt+TJ+1fpuScn7vAtIFSjn1jgPANE+IcVdk4QKDFKu0LQdiurPQKLpq8Q3wJDAW7FxB2MHw/4ca/9w0N5VL0hQegZ4YhxDss6QIDAQABprivateKey";

string?privatekey = @"MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAL8z2QlXCL6w7rvY0Gbl8ARtQSXY+pEW5hlUHlmspqHt4k8/SkoF796gDqk4yyOcoWhkZWLPPugK35Mn7V+m5Jyfu8C0gVKOfWOA8A0T4hxV2ThAoMUq7QtB2K6s9AoumrxDfAkMBbsXEHYwfD/hxr/3DQ3lUvSFB6BnhiHEOyzpAgMBAAECgYEAol/9qRjorEjF9XEjSr9rHddKxEGIST8RGeF+BNnCiTHkRziQdlykYIO876jzmsKhsG3STB+EZLsXM3ls9RZefcsPF5mLOCSOCow3DikfCtAy4hntsU9JwpuYE0V4A+Sgfd24fatqbu+JxE2nvpSbAPczDOgBFPNfYBkhMiuZ/iECQQDzUeq7lFcIE4uWhRGveVFjNAGuSsW+q9GOwO7tS5YwuAIQ2M+XgYGRFo8xMC6V/9SfqJtmSU1zk72pMlYufIqHAkEAySqkcKbWuobq5I9KSQISq2qCuGKtj/iUFho4PCD1YxhnQ7gcHA4OpS1dRFjtXJYQPTX9be+mmypsCFIyofE5DwJBAPGZ20wahTh9v9Lbmq3z9n5ce3bGxAcJsHDg3d09eooxi8uSnL5BV5frII+k2f0TI9rMnlE4Y/FpN5+zXaOXAi0CQQCs3Aqfjo23jJWtPv/LSo+2YnjfblPMAgNmFrO532xc8axSgZMN/HpTL28UewHD7GMZ5hnWbPcSIFrir5c4luq7AkEAi90WdnZVPxtSTqkkLYbnh4Ro2WhdwRjkfyBxBZZx8hfaM6MfLPi3A0rw9DPOSB4M/BMchtEh3bXuI7bue2tG+A==";

? ? ? ?但是,在C#的,私鑰和公鑰的格式不是這樣的,那應該怎么把JAVA轉換成C#需要的格式呢?

? ? ? ?C#中需要的密鑰是如下格式:

string?privatekey?= @"<RSAKeyValue><Modulus>vzPZCVcIvrDuu0jQZuXwBG1BJdj6kRbmGVQeWaymoe3iTz9KSgXv3qAOqTjLI5yhaGRlYs8+6ArfkyftX6bknJ+7wLSBUo59Y4DwDRPiHFXZOECgxSrtC0HYrqz0Ci6avEN8CQwFuxcQdjB8P+HGv/cNDeVS9IUHoGeGIcQ7LOk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

string privatekey?= @"<RSAKeyValue><Modulus>vzPZCVcIvrDuu1jQZuXwBG1BJdj6kRbmGVQeWaymoe3iTz9KSgXv3qAOqTjLI5yhaGRlYs8+6ArfkyftX6bknJ+7wLSBUo59Y4DwDRPiHFXZOECgxSrtC0HYrqz0Ci6avEN8CQwFuxcQdjB8P+HGv/cNDeVS9IUHoGeGIcQ7LOk=</Modulus><Exponent>AQAB</Exponent><P>81Hqu5RXCBOLloURr3lRYzQBrkrFvqvRjsDu7UuWMLgCENjPl4GBkRaPMTAulf/Un6ibZklNc5O9qTJWLnyKhw==</P><Q>ySqkcKbWuobq5I9KSQISq2qCuGKtj/iUFho4PCD1YxhnQ7gcHA4OpS1dRFjtXJYQPTX9be+mmypsCFIyofE5Dw==</Q><DP>8ZnbTBqFOH2/0tuarfP2flx7dsbEBwmwcODd3T16ijGLy5KcvkFXl+sgj6TZ/RMj2syeUThj8Wk3n7Ndo5cCLQ==</DP><DQ>rNwKn46Nt4yVrT7/y0qPtmJ4325TzAIDZhazud9sXPGsUoGTDfx6Uy9vFHsBw+xjGeYZ1mz3EiBa4q+XOJbquw==</DQ><InverseQ>i90WdnZVPxtSTqkkLYbnh4Ro2WhdwRjkfyBxBZZx8hfaM6MfLPi3A0rw9DPOSB4M/BMchtEh3bXuI7bue2tG+A==</InverseQ><D>ol/9qRjorEjF9XEjSr9rHddKxEGIST8RGeF+BNnCiTHkRziQdlykYIO876jzmsKhsG3STB+EZLsXM3ls9RZefcsPF5mLOCSOCow3DikfCtAy4hntsU9JwpuYE0V4A+Sgfd24fatqbu+JxE2nvpSbAPczDOgBFPNfYBkhMiuZ/iE=</D></RSAKeyValue>";

? ? ? ?由于密鑰是用在正式使用中,所以以上給的只是一個形式。

? ? ? ?既然這對密鑰是從JAVA來的,那么,就必須到JAVA中去處理成C#的格式。

? ? ? ?就算不會JAVA的新手都可以轉換的,只需要把以下的代碼添加進eclipse中就可以了,具體的怎么建java工程就自己去查一下。

? ? ? ?把上面一對密鑰轉成C#中格式的密鑰在JAVA中的轉換代碼如下:? ? ??

package com;

import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateCrtKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
//import org.castor.util.Base64Decoder;
//import org.castor.util.Base64Encoder;

public class test {

public static void main(String[] args)
{
String tes="MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAL8z2QlXCL6w7rvY0Gbl8ARtQSXY+pEW5hlUHlmspqHt4k8/SkoF796gDqk4yyOcoWhkZWLPPugK35Mn7V+m5Jyfu8C0gVKOfWOA8A0T4hxV2ThAoMUq7QtB2K6s9AoumrxDfAkMBbsXEHYwfD/hxr/3DQ3lUvSFB6BnhiHEOyzpAgMBAAECgYEAol/9qRjorEjF9XEjSr9rHddKxEGIST8RGeF+BNnCiTHkRziQdlykYIO876jzmsKhsG3STB+EZLsXM3ls9RZefcsPF5mLOCSOCow3DikfCtAy4hntsU9JwpuYE0V4A+Sgfd24fatqbu+JxE2nvpSbAPczDOgBFPNfYBkhMiuZ/iECQQDzUeq7lFcIE4uWhRGveVFjNAGuSsW+q9GOwO7tS5YwuAIQ2M+XgYGRFo8xMC6V/9SfqJtmSU1zk72pMlYufIqHAkEAySqkcKbWuobq5I9KSQISq2qCuGKtj/iUFho4PCD1YxhnQ7gcHA4OpS1dRFjtXJYQPTX9be+mmypsCFIyofE5DwJBAPGZ20wahTh9v9Lbmq3z9n5ce3bGxAcJsHDg3d09eooxi8uSnL5BV5frII+k2f0TI9rMnlE4Y/FpN5+zXaOXAi0CQQCs3Aqfjo23jJWtPv/LSo+2YnjfblPMAgNmFrO532xc8axSgZMN/HpTL28UewHD7GMZ5hnWbPcSIFrir5c4luq7AkEAi90WdnZVPxtSTqkkLYbnh4Ro2WhdwRjkfyBxBZZx8hfaM6MfLPi3A0rw9DPOSB4M/BMchtEh3bXuI7bue2tG+A==";
byte[] temp=b64decode(tes);
String ver=getRSAPrivateKeyAsNetFormat(temp);//轉換私鑰

String tes1="MIGfMA0GCSqGSIb4DQEBAQUAA4GNADCBiQKBgQC/M9kJVwi+sO672NBm5fAEbUEl2PqRFuYZVB5ZrKah7eJPP0pKBe/eoA6pOMsjnKFoZGVizz7oCt+TJ+1fpuScn7vAtIFSjn1jgPANE+IcVdk4QKDFKu0LQdiurPQKLpq8Q3wJDAW7FxB2MHw/4ca/9w0N5VL0hQegZ4YhxDss6QIDAQAB";
byte[] temp1=b64decode(tes1);
String ver1=getRSAPublicKeyAsNetFormat(temp1);//轉換公鑰
//String temp2= encodePublicKeyToXml(temp1);

}

private static String getRSAPrivateKeyAsNetFormat(byte[] encodedPrivkey) {
try {
StringBuffer buff = new StringBuffer(1024);

PKCS8EncodedKeySpec pvkKeySpec = new PKCS8EncodedKeySpec(
encodedPrivkey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPrivateCrtKey pvkKey = (RSAPrivateCrtKey) keyFactory
.generatePrivate(pvkKeySpec);

buff.append("<RSAKeyValue>");
buff.append("<Modulus>"
+ b64encode(removeMSZero(pvkKey.getModulus().toByteArray()))
+ "</Modulus>");

buff.append("<Exponent>"
+ b64encode(removeMSZero(pvkKey.getPublicExponent()
.toByteArray())) + "</Exponent>");

buff.append("<P>"
+ b64encode(removeMSZero(pvkKey.getPrimeP().toByteArray()))
+ "</P>");

buff.append("<Q>"
+ b64encode(removeMSZero(pvkKey.getPrimeQ().toByteArray()))
+ "</Q>");

buff.append("<DP>"
+ b64encode(removeMSZero(pvkKey.getPrimeExponentP()
.toByteArray())) + "</DP>");

buff.append("<DQ>"
+ b64encode(removeMSZero(pvkKey.getPrimeExponentQ()
.toByteArray())) + "</DQ>");

buff.append("<InverseQ>"
+ b64encode(removeMSZero(pvkKey.getCrtCoefficient()
.toByteArray())) + "</InverseQ>");

buff.append("<D>"
+ b64encode(removeMSZero(pvkKey.getPrivateExponent()
.toByteArray())) + "</D>");
buff.append("</RSAKeyValue>");

return buff.toString().replaceAll("[ \t\n\r]", "");
} catch (Exception e) {
System.err.println(e);
return null;
}
}

private static String getRSAPublicKeyAsNetFormat(byte[] encodedPrivkey) {
try {
StringBuffer buff = new StringBuffer(1024);

PKCS8EncodedKeySpec pvkKeySpec = new PKCS8EncodedKeySpec(encodedPrivkey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKey pukKey=(RSAPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(encodedPrivkey));
// RSAPrivateCrtKey pvkKey = (RSAPrivateCrtKey) keyFactory.generatePrivate(pvkKeySpec);

//PublicKey publicKey =KeyFactory.getInstance("RSA").generatePublic(pvkKeySpec);

buff.append("<RSAKeyValue>");
buff.append("<Modulus>"
+ b64encode(removeMSZero(pukKey.getModulus().toByteArray()))
+ "</Modulus>");
buff.append("<Exponent>"
+ b64encode(removeMSZero(pukKey.getPublicExponent()
.toByteArray())) + "</Exponent>");
buff.append("</RSAKeyValue>");
return buff.toString().replaceAll("[ \t\n\r]", "");
} catch (Exception e) {
System.err.println(e);
return null;
}
}

public static String encodePublicKeyToXml(PublicKey key) {
if (!RSAPublicKey.class.isInstance(key)) {
return null;
}
RSAPublicKey pubKey = (RSAPublicKey) key;
StringBuilder sb = new StringBuilder();

sb.append("<RSAKeyValue>");
sb.append("<Modulus>")
.append(Base64.encode(pubKey.getModulus().toByteArray()))
.append("</Modulus>");
sb.append("<Exponent>")
.append(Base64.encode(pubKey.getPublicExponent()
.toByteArray())).append("</Exponent>");
sb.append("</RSAKeyValue>");
return sb.toString();
}

private static byte[] removeMSZero(byte[] data) {
byte[] data1;
int len = data.length;
if (data[0] == 0) {
data1 = new byte[data.length - 1];
System.arraycopy(data, 1, data1, 0, len - 1);
} else
data1 = data;

return data1;
}

private static String b64encode(byte[] data) {

String b64str = new String(Base64.encode(data));
return b64str;
}

private static byte[] b64decode(String data) {
byte[] decodeData = Base64.decode(data);
return decodeData;
}
}

到此,JAVA的密鑰對,就可以轉換成C#中的格式的密鑰對了!

?

至于C#轉成JAVA的格式,在下一章再寫!

?

?

轉載于:https://www.cnblogs.com/hvaning/p/3636288.html

總結

以上是生活随笔為你收集整理的RSA的密钥把JAVA格式转换成C#的格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷激情综合 | 大尺度激情吻胸视频 | 亚洲五月婷婷 | 青青草国产在线观看 | 免费av影视| 美女野外找人搭讪啪啪 | 成人一区二区三区在线观看 | 久久久中文网 | 国产乱仑 | 校园春色亚洲 | 有码在线播放 | 成年人精品 | 欧美高清一区二区三区四区 | 亚洲午夜久久久久久久久 | 天天操天天操天天操天天操天天操 | 亚洲av无码一区东京热久久 | 三级黄色免费 | 全黄一级播放 | 一本色道综合久久欧美日韩精品 | av女优天堂在线观看 | 四虎影视库 | 国内自拍偷拍网 | 香蕉视频毛片 | 久久精品精品 | 一区二区三区在线观看免费 | 五月婷婷在线视频 | 久久久ww | 欧美午夜在线观看 | 国产熟女精品视频 | 亚洲精品污一区二区三区 | 国产69视频在线观看 | 在线的av| 精品香蕉一区二区三区 | 在线观看你懂得 | 国产亚洲欧美精品久久久久久 | 青青草www | 欧美一区二区三区免费在线观看 | 国产综合精品一区二区三区 | 日韩在线播放av | 成人av综合网 | 奇米在线播放 | 国产资源精品 | 精品无码久久久久久久久久 | 一级片99| 久久综合一本 | 国产精品夜夜爽 | 午夜小电影 | 婷婷久久亚洲 | 亚洲一区二区三区免费看 | 亚洲剧情av| 粉嫩aⅴ一区二区三区 | 国产精品网友自拍 | 天天干,天天操,天天射 | 久久久久亚洲色欲AV无码网站 | 国产一区在线视频 | 久久亚洲一区二区三区四区五区 | 成人在线免费观看网址 | 天天干天天上 | 女人17片毛片60分钟 | 影院一区| 久久福利网 | 国产精品亚洲lv粉色 | 婷婷五月综合激情 | 91导航| 亚洲精品视频在线观看视频 | sm在线观看| 国产偷人妻精品一区二区在线 | 九九视频精品在线 | 精品欧美一区二区精品久久 | 一本色道久久综合狠狠躁的推荐 | 午夜在线免费观看 | 日本一区二区在线看 | 一级毛片基地 | 在线看黄色网 | youjizz韩国 | 午夜黄色剧场 | 福利网站在线观看 | 偷偷操视频 | 老熟妇高潮一区二区高清视频 | 性色av浪潮| 欧美午夜性春猛交 | 99国产精品久久久久久久成人热 | 成人免费区一区二区三区 | 亚洲精品久久久久久久久久久久久 | 拍真实国产伦偷精品 | 欧美日韩1区 | 日韩一区二区三区四区在线 | 激情综合婷婷 | 日韩网站视频 | 日韩欧美中文字幕精品 | 黄色一集片 | 伊人伊人网| 色片网站在线观看 | 国产精品无码久久久久久 | 奇米影视四色777 | 亚洲精品久久久久久久蜜桃 | 国产精品香蕉国产 | 亚洲精品一二区 | 亚洲成在线观看 |