在c#中编码base64公钥并在java中解码base64

时间:2017-11-28 13:43:33

标签: java c# base64 public-key

在C#中使用base64对公钥进行编码的正确方法是什么,保存到文件,以及在java中读取该文件后重新计算密钥。

这在C#中

File.WriteAllText(System.Convert.ToBase64String(certificate.GetPublicKey()))

在Java中,我读了所有字节,然后我尝试了这个:

PublicKey pubKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(bytesFromFile)))

它抛出

  

无效的密钥格式

1 个答案:

答案 0 :(得分:0)

用C#编码:

setlocal

SET JAVAHOME=..\java  
SET PATH=%JAVAHOME%\jre\bin;%JAVAHOME%\jre\bin\client;%JAVAHOME%\bin;%PATH%    
SET PATH=%PATH%;bin\ 
SET POLICY=java.policy 
SET JAR_BOOT=program.jar 
SET CONFIG_FILE=program.xml

IF EXIST jar\%JAR_BOOT% copy jar\%JAR_BOOT% . >NUL

start javaw -Xbootclasspath/p:jar/xercesImpl-2.9.1.jar;jar/xml-apis-1.3.04.jar;jar/xalan-2.7.1m1.jar;jar/serializer-2.7.1m.jar -Xmx1024M -XX:MaxPermSize=200M -cp %JAR_BOOT% -Dsun.java2d.noddraw=true -DJINTEGRA_NATIVE_MODE -Djava.security.policy=%POLICY% -jar %JAR_BOOT%

title Command Prompt 
endlocal

用Java解码:

@using System;
@using System.Text;

string password = "yourpassword";
 var passwordBytes = Encoding.UTF8.GetBytes(password);
 string encodedPassword = Convert.ToBase64String(passwordBytes);
 //Debug.Write("csEncodedPassword: "+csEncodedPassword);