.Net 操作证书文件
发布时间:2020-12-16 23:38:14 所属栏目:百科 来源:网络整理
导读:一、.Net加签与验签。经过测试,发现使用同一套私钥和公钥,JAVA和.Net可以实现互通 ?1.1 私钥加签 公钥验签 public void Encode() { try { var path = AppDomain.CurrentDomain.BaseDirectory + " ../../ADFS/donghuangtaiyi.pfx " ; X509Certificate2 cert
一、.Net加签与验签。经过测试,发现使用同一套私钥和公钥,JAVA和.Net可以实现互通 ?1.1 私钥加签 公钥验签 public void Encode() { try { 1.2验签 public void Decode() { try { var path = AppDomain.CurrentDomain.BaseDirectory + "../../ADFS/dongsheng.crt"; var publicCert = new X509Certificate2(path); var publicKey = publicCert.PublicKey.Key.ToXmlString(false); var rsaProvider = new RSACryptoServiceProvider(); rsaProvider.FromXmlString(publicKey); var signatureData = Encoding.UTF8.GetBytes(data); var result = rsaProvider.VerifyData(signatureData,CryptoConfig.MapNameToOID("SHA256"),Convert.FromBase64String(SignatureData)); } catch (Exception ex) { throw; } } ? 二、实现私钥和公钥,.Net与Java转换。java和.Net秘钥格式不一样,.Net是xml格式,Java是字符串格式。 引用?BouncyCastle.dll类库 2.1 加签,这个加签结果和1.1的加签结果是一样的 public string EncodeJava() { try { var path = AppDomain.CurrentDomain.BaseDirectory + "../../ADFS/donghuangtaiyi.pfx"; X509Certificate2 cert = new X509Certificate2(path,"7391428",X509KeyStorageFlags.Exportable); var privateKey = cert.PrivateKey.ToXmlString(true); var javaPrivateKey = DoNet2JavaForKey.RSAPrivateKeyDotNet2Java(privateKey); RsaKeyParameters privateKeyParam = (RsaKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(javaPrivateKey)); ISigner signer = SignerUtilities.GetSigner("SHA384WithRSA"); signer.Init(true,privateKeyParam); var dataByte = Encoding.UTF8.GetBytes(data); signer.BlockUpdate(dataByte,0,dataByte.Length); var result = Convert.ToBase64String(signer.GenerateSignature()); return result; } catch (Exception ex) { return ""; } } ? 2.1解签
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |