Java SHA512 & .net SHA512 – Hash Sharing for SOAP ( Hash API only )
Java Side |
package org.tempuri; import java.io.FileInputStream; import java.security.KeyStore; import java.security.cert.Certificate; import java.security.MessageDigest; public class CertDAO { … … public static String loadKey(String keystoreFilename) throws Exception { //Keystore File Path = "C:\\Cert\\WCFServer.jks"; char[] password = "password".toCharArray(); String alias = "wcfserver"; FileInputStream fIn = new FileInputStream(keystoreFilename); KeyStore keystore = KeyStore.getInstance("JKS"); keystore.load(fIn, password); Certificate cert = keystore.getCertificate(alias); //System.out.println(cert); byte[] certBuf = cert.getEncoded(); String certResult= new sun.misc.BASE64Encoder().encode(certBuf); //System.out.println(">>>" + certResult); MessageDigest md = MessageDigest.getInstance("SHA-512"); md.update(certResult.getBytes()); byte[] digestBuf = md.digest(); String digString = new sun.misc.BASE64Encoder().encode(digestBuf); //System.out.println(">>>" + digString); return digString; } } |
.net Side |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography; using System.Configuration; namespace WCF_DAO.DAO { public class CertDAO { public String getCertExport() { String CertFilePath = ConfigurationManager.AppSettings[“CertFilePath"].ToString(); \\ File Path : C:\Cert\Cert.pfx" String CertFilePassword = ConfigurationManager.AppSettings[“CertFilePasswd"].ToString(); \\ In PlainText X509Certificate2 cert = new X509Certificate2(CertFilePath, CertFilePassword); return ExportToPEM(cert); } private string ExportToPEM(X509Certificate2 cert) { StringBuilder builder = new StringBuilder(); String CertHash = Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks); SHA512Managed sha = new SHA512Managed(); return Convert.ToBase64String(sha.ComputeHash(Encoding.ASCII.GetBytes(CertHash))).ToString(); } } } |