java - 将JAVA代码KeyStore.getInstance转为c#

标签 java c# pkcs#12

我正在尝试将以下 JAVA 代码转换为 C# 以获取 ECPrivateKey

private static ECPrivateKey loadPrivateKey(String pkcs12Filename) throws KeyStoreException, NoSuchProviderException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException {
    KeyStore keystore = KeyStore.getInstance("PKCS12", "BC");
    keystore.load(new FileInputStream(pkcs12Filename), "".toCharArray());
    assert keystore.size() == 1 : "wrong number of entries in keychain";
    Enumeration<String> aliases = keystore.aliases();
    String alias = null;
    while (aliases.hasMoreElements()) {
      alias = aliases.nextElement();
    }
    return (ECPrivateKey) keystore.getKey(alias, null);
}

最佳答案

这是代码,我用这个得到了输出。

private void GetPrivateKeyFromP12(string path, string passWord)
        {
            //this.mKeyStoreEntities = PKCSUtils.extractEntities(privateKeyFilePath, privateKeyPassword);
            /**
             * Java has a minimum requirement for keystore password lengths.  Utilities like KeyChain will
             * allow you to specify less but then you will receive an obscure java error when trying to
             * load the keystore.  Check for it here and throw a meaningful error
             */

            //X509Certificate certificate;
            //ECPrivateKey privateKey;

            using (StreamReader reader = new StreamReader(path))
            {
                var fs = reader.BaseStream;
                GetMerchantIdentifierField(fs);

                fs.Position = 0;
                GetPrivateKey(fs, passWord);
            }
        }

        private void GetPrivateKey(Stream fs, string passWord)
        {
            Pkcs12Store store = new Pkcs12Store(fs, passWord.ToCharArray());

            foreach (string n in store.Aliases)
            {
                if (store.IsKeyEntry(n))
                {
                    AsymmetricKeyEntry asymmetricKey = store.GetKey(n);

                    if (asymmetricKey.Key.IsPrivate)
                    {
                        this.merchantPrivateKey = asymmetricKey.Key as ECPrivateKeyParameters;
                    }
                }
            }
        }

关于java - 将JAVA代码KeyStore.getInstance转为c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908420/

相关文章:

java - 如何将普通 Java for 循环转换为 Java 8 流?

Java函数重载查询

c# - C#中虚方法的问题

c# - WebSetup 可以包含多个 Web 应用程序吗?

cryptography - 给定一个 PEM 文档,是否有可能从中知道字节的格式,或者是否需要先验信息?

java - 如何使用 Mongo Java 驱动程序编写带有索引交集的查询

c# - 如何对自定义套接字 TCP 协议(protocol)使用证书身份验证?

ssl - 如何将 .p12 转换为包含未加密 PKCS#1 私钥 block 的 .pem?

.net - 如何将 StrongName KeyPair 与受密码保护的 key 文件 (pfx) 一起使用?

java - Open MQ 异常现象 : unexpectedly messages start to get stuck in the JMS Queue for a while before delivering them to the MDB