简体   繁体   English

.NET 等效于 Java KeyFactory.getInstance "RSA"/"RSA/ECB/PKCS1Padding"

[英].NET equivalent of Java KeyFactory.getInstance "RSA"/"RSA/ECB/PKCS1Padding"

I have the following code,我有以下代码,

public static String encrypt(String plainText, String key){
    try{
        PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.decode(key, Base64.DEFAULT)));
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        return Base64.encodeToString(cipher.doFinal(plainText.getBytes("UTF-8")),Base64.DEFAULT);
    }catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

I want to convert this to C#.我想将其转换为 C#。 I have tried CryptUtils but it doesn't work https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/CryptUtils.cs我试过 CryptUtils 但它不起作用https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/CryptUtils.cs

Sample key,样品键,

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ9AMIIBCgKCAQEAoqB1N9kugk4UKYnbh0fcg3qYyYKP0m4B
MjWd05ReeAdj+7JRYDEKO6xthDdVSdRO1/2V+YtY8DnXWnxRaICwu8235s3imZCyqgYnomPWdY+F
K540oTz/zug+9wbrlzt/WQFUU4lPlQbzm/Gjw8XfaCozT0e3bnWQcD7rORCOyuJgwSGgREjTv1ss
pgEaKTMknii9vpGZLeAXwoeIYROhuT4IoIkPDhtY0/UZiCi6v7Ja2dmy53VlWIkcm3rcnSJdvpXr
OgiHvaNABHmeymNycNqd6WUaysBRheluQ86nq/2nZPW0gcvmYt5zbMMYX3yY/n2WtAKeNQBAEW1q
b0s6MwIDAQAB

Possible encryped value,可能的加密值,

Y3VTjghDnTrCeG8C/RklKsJ3Y0Mt89sSGGin28E4iQPQvKqeZBws7rBQEZaRamDWftxCkEYZs4Qh
V2l4IVlrawdtRmQlcQh8McrpqP/97Gz8pEDEYnqA7kqBTqZw0Z5o0WsshGSwiAQ9wNSym4xHejkq
zrKxWP8XCMkcT0NlKlRMoqKKICFKZbqWeSQkQM5y9OEcmB6inNNkJCoM1Ip48+cK3cOE6dqXNVrl
sSTZ8WQKwoB3dJmcYqexR3kAvBYdX6ZxEF+2+6b9h8+tc5G7Y5R2eqycyUossdkCcI3fNVhyc72P
axCjZFWZUgfDGCxg1WNhStrH9L8c59P35JKKug==

Since i don't have the private key, i can't decrypt, but at least this produces the right lengthed values.由于我没有私钥,我无法解密,但至少这会产生正确的长度值。

So try this (you need bouncycastle for reading pem):所以试试这个(你需要 bouncycastle 来阅读 pem):

using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;

 var keyBytes =
    Convert.FromBase64String(
      "MIIBI...."); // your key here

  AsymmetricKeyParameter asymmetricKeyParameter = PublicKeyFactory.CreateKey(keyBytes);
  RsaKeyParameters rsaKeyParameters = (RsaKeyParameters)asymmetricKeyParameter;
  RSAParameters rsaParameters = new RSAParameters();
  rsaParameters.Modulus = rsaKeyParameters.Modulus.ToByteArrayUnsigned();
  rsaParameters.Exponent = rsaKeyParameters.Exponent.ToByteArrayUnsigned();
  RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  rsa.ImportParameters(rsaParameters);

  byte[] plaintext = Encoding.UTF8.GetBytes("amount=1&currency=AED");
  byte[] ciphertext = rsa.Encrypt(plaintext, false);
  string cipherresult = Convert.ToBase64String(ciphertext);

Thanks so much!!!非常感谢!!! helped me a lot!!!帮了我很多!!! :) :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用RSA / ECB / PKCS1Padding进行.Net加密和Java解密 - .Net encryption and java decryption with RSA/ECB/PKCS1Padding 使用RSA / ECB / PKCS1Padding在Java中进行加密无法在.Net中解密 - Encrypted in Java using RSA/ECB/PKCS1Padding unable to decrypt in .Net 如何使用算法 RSA/ECB/PKCS1Padding 通过加密字符串的 node.js 进行加密 - How to encrypt through node.js of encrypted string using algorithm RSA/ECB/PKCS1Padding 使用模量和指数的C#中的RSA / ECB / PKCS1填充解密 - RSA/ECB/PKCS1Padding Decryption in C# using Modulus and Exponent 相当于Java的RSA_PKCS1_OAEP_PADDING - RSA_PKCS1_OAEP_PADDING equivalent for Java RSA / NONE / PKCS1Padding给出错误,如java.security.NoSuchAlgorithmException - RSA/NONE/PKCS1Padding giving error as java.security.NoSuchAlgorithmException java RSA/ECB/OAEPWithSHA 256AndMGF1Padding 在 golang 中等效 - java RSA/ECB/OAEPWithSHA 256AndMGF1Padding equivalent in golang Java Cipher.getInstance(“ RSA / ECB / NoPadding”); 等价于C#? 我无法在.net Framework应用程序中加密消息 - Java Cipher.getInstance(“RSA/ECB/NoPadding”); equivalent in C#? I can't encrypt message in .net framework application 如何在Java中使用给定的公钥以rsa / ecb / pkcs1填充模式编码文本? - How to encode a text with rsa/ecb/pkcs1 padding mode with a given public key in java? 使用RSA / ECB / PKCS1padding的Android加密问题。 它在Java和Android中给出不同的结果 - Issue in Android Encryption using RSA/ECB/PKCS1padding. It gives different results in Java and Android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM