Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c“相当于”;java.security.spec.RSAPublicKeySpec“;及;java.security.PublicKey“;_C#_Java_Encryption_Rsa - Fatal编程技术网

C# c“相当于”;java.security.spec.RSAPublicKeySpec“;及;java.security.PublicKey“;

C# c“相当于”;java.security.spec.RSAPublicKeySpec“;及;java.security.PublicKey“;,c#,java,encryption,rsa,C#,Java,Encryption,Rsa,我正在用c语言开发一个现有java应用程序的新版本 现有应用程序使用带有java.security.spec.*和boncycastle api的RSA加密 我正在为下面的java代码寻找c#中的等效代码: public static java.security.PublicKey getKey ( org.bouncycastle.asn1.x509.RSAPublicKeyStructure rsaPublicKey ) { java.security.KeyFactory keyFac

我正在用c语言开发一个现有java应用程序的新版本

现有应用程序使用带有java.security.spec.*和boncycastle api的RSA加密

我正在为下面的java代码寻找c#中的等效代码:

public static java.security.PublicKey getKey
(
org.bouncycastle.asn1.x509.RSAPublicKeyStructure  rsaPublicKey
)
{

java.security.KeyFactory keyFactory = KeyFactory.getInstance("RSA");

 java.security.spec.RSAPublicKeySpec keySpec = new RSAPublicKeySpec(
rsaPublicKey.getModulus(), 
rsaPublicKey.getPublicExponent());

java.security.PublicKey pkey = keyFactory.generatePublic(keySpec);

return pkey;
}
我“搜索”了很多,但没有找到解决办法


提前感谢您的帮助。

尽管您可能已经意识到这一点,但有一个.NET版本的,因此您可以在C#项目中使用它

关于您的问题,下面是一个在pure Bouncy Castle中实现签名的示例,它处理MakeKey方法中的密钥生成,因此您可能想看看它

顺便说一下,如果此密钥位于证书中,您可能需要查看.NET X509Certificate2类

编辑

我试图将您的方法转换为c#等效方法,这一点与我得到的结果越接近:

public static byte[] getKey(Org.BouncyCastle.Asn1.x509.RSAPublicKeyStructure  rsaPublicKey)
{
    Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters bcKeySpec = new RsaKeyParameters();
    bcKeySpec.RsaKeyParameters(false, rsaPublicKey.getModulus(), rsaPublicKey.getPublicExponent());
    RSAParameters keySpec = Org.BouncyCastle.Security.DotNetUtilities.ToRSAParameters(bcKeySpec);
    RSACryptoServiceProvider keyFactory = new RSACryptoServiceProvider();
    keyFactory.ImportParameters(keySpec);
    byte[] pKey = keyFactory.ExportCspBlob(false);
    return pKey;
}
请注意,密钥被导出到字节数组中,这取决于您以后要对密钥执行的操作,可能对您有帮助,也可能对您没有帮助。此外,RSACryptServiceProvider对象允许您加密、解密、签名和验证,因此,如果您要获取用于上述任何目的的密钥,然后,您可能希望返回keyFactory对象,而不是导出的公钥


如果您想了解有关RSACryptServiceProvider的更多信息,可以在此处阅读:

尽管您可能已经意识到这一点,但有一个.NET版本的,因此您可以在C#项目中使用它

关于您的问题,下面是一个在pure Bouncy Castle中实现签名的示例,它处理MakeKey方法中的密钥生成,因此您可能想看看它

顺便说一下,如果此密钥位于证书中,您可能需要查看.NET X509Certificate2类

编辑

我试图将您的方法转换为c#等效方法,这一点与我得到的结果越接近:

public static byte[] getKey(Org.BouncyCastle.Asn1.x509.RSAPublicKeyStructure  rsaPublicKey)
{
    Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters bcKeySpec = new RsaKeyParameters();
    bcKeySpec.RsaKeyParameters(false, rsaPublicKey.getModulus(), rsaPublicKey.getPublicExponent());
    RSAParameters keySpec = Org.BouncyCastle.Security.DotNetUtilities.ToRSAParameters(bcKeySpec);
    RSACryptoServiceProvider keyFactory = new RSACryptoServiceProvider();
    keyFactory.ImportParameters(keySpec);
    byte[] pKey = keyFactory.ExportCspBlob(false);
    return pKey;
}
请注意,密钥被导出到字节数组中,这取决于您以后要对密钥执行的操作,可能对您有帮助,也可能对您没有帮助。此外,RSACryptServiceProvider对象允许您加密、解密、签名和验证,因此,如果您要获取用于上述任何目的的密钥,然后,您可能希望返回keyFactory对象,而不是导出的公钥


如果您想了解有关RSACryptServiceProvider的更多信息,请阅读此处:

你好,Rafael,谢谢您的回答。我也在用Boncycastle。我的问题是:类java.security.KeyFactory和java.security.spec.RSAPublicKeySpec在C#api(或bouncycastle)中是否存在等价性?PS:新的C#版本必须支持旧java版本生成的密钥。先谢谢你。或者简单地说,如何从C#中给定的模和指数创建RSA公钥?可能吗?谢谢你的帮助!你好,拉斐尔,谢谢你的回答。我也在用Boncycastle。我的问题是:类java.security.KeyFactory和java.security.spec.RSAPublicKeySpec在C#api(或bouncycastle)中是否存在等价性?PS:新的C#版本必须支持旧java版本生成的密钥。先谢谢你。或者简单地说,如何从C#中给定的模和指数创建RSA公钥?可能吗?谢谢你的帮助!欢迎来到SO!这里不鼓励只使用代码的答案,因为它们无法提供问题是如何解决的。请更新您的答案,解释您的代码如何解决OP的问题:)欢迎使用SO!这里不鼓励只使用代码的答案,因为它们无法提供问题是如何解决的。请更新您的答案,解释您的代码如何解决OP的问题:)