Tag: rsacryptoserviceprovider

使用RSACryptoServiceProvider解密时出现“Bad Key。”exception(C#.NET)

我试图解密以前在RSA中加密的数据(别担心,我应该能够,我有钥匙。没有什么非法:)。 但是,我得到了一个“坏键”。 解密线上的错误。 我确信这个关键是正确的,因为我从矢量中取出它。 矢量在以下代码中提供。 理论上,我有解密的所有信息,虽然它不起作用。 我在想它可能是一种解密的.NET方式,我还不明白。 这是代码: static void Main(string[] args) { byte[] N = // Modulus { 0x00, 0x8C, 0x35, 0x04, 0xC8, 0x40, 0xB3, 0x67, 0xD8, 0x42, 0x35, 0x78, 0xF6, 0x2A, 0x02, 0xBE, 0xF7, 0x1C, 0xCD, 0x9D, 0x98, 0x55, 0x16, 0x3F, 0x81, 0xA4, 0xE5, 0x3E, 0x3D, 0x38, 0x27, 0xEE, 0x0D, 0x8B, 0xAF, 0xB0, […]

对象已存在于RSACryptoServiceProvider中

我将源代码从一个应用程序复制到另一个应用程序,两者都在同一台机器上运行。 我在两个应用程序中也使用下面的containerName相同的字符串。 是什么阻止我的新应用程序读取另一个应用程序中保存的密钥? 所有其他事情都是平等的,登录用户帐户等。 CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = containerName; cspParams.Flags = CspProviderFlags.UseMachineKeyStore; // Get error “object already exists” below. RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);

C#RSA加密/解密引发exception

我正在尝试设置一小块信息的简单服务器端RSA加密,这将在客户端解密。 就像概念certificate一样,我写了几行来确保可以从xml加载公钥和私钥。 但是,即使最简单的东西在我的机器上工作,我也很难做到: byte[] bytes = Encoding.UTF8.GetBytes(“Some text”); bool fOAEP = true; // seeding a public and private key RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); var publicKey = rsa.ToXmlString(false); var privateKey = rsa.ToXmlString(true); //server side RSACryptoServiceProvider rsaServer = new RSACryptoServiceProvider(); rsaServer.FromXmlString(privateKey); var encrypted = rsaServer.Encrypt(bytes, fOAEP); //client side RSACryptoServiceProvider rsaClient = new RSACryptoServiceProvider(); rsaClient.FromXmlString(publicKey); var decrypted […]

C#RSACryptoServiceProvider:如何检查容器中是否已存在密钥?

我正在为多个客户端之间构建一个安全消息传递应用程序。 为了实现这一点,我使用AES加密消息,然后使用收件人公共RSA密钥加密AES密钥,然后将这两个组件(RSA加密的AES密钥和AES加密的消息)发送给收件人。 整个过程运作良好,没有任何错误。 现在我遇到了一个问题,我想知道什么是最好的做法:为了坚持一个adipent的私钥和公钥,我需要存储密钥对。 可以将它保存为某个XML文件,但显然不是一个选项。 所以决定使用这里描述的密钥容器。 实现容器的使用非常简单,但我怎么能 检查指定的容器是否已存在? 检查密钥大小是否与给定值匹配? 据我所知,这是不可能的,因为如果容器不存在,RSACryptoServiceProvider会生成一个新密钥 – 没有这么说。 但我需要知道是否有先前存储的密钥对可用,或者是否创建了新的密钥对。 我该如何解决这个问题? 或者这是一个完全错误的方法? 谢谢你的帮助! 问候,Rob

将C#RSACryptoServiceProvider代码转换为Java

我需要为项目相关的目的加密String,并由供应商给出相同的代码。 public static string EncryptString(string StringToEncrypt) { RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); string xmlString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=AQAB20PwC7nSsfrfA9pzwSOnRYdbhOYivFSuERxvXHvNjCll5XdmFYYp1d2evXcXbyj3E1k8azce1avQ9njH85NMNQ==x0G0lWcQ13NDhEcWbA7R2W5LPUmRqcjQXo8qFIaHk7LZ7ps9fAk/kOxaCR6hvfczgut1xSpXv6rnQ5IGvxaHYw==lyybF2qSEvYVxvFZt8MeM/jkJ5gIQPLdZJzHRutwx39PastMjfCHbZW0OYsflBuZZjSzTHSfhNBGbXjO22gmNQ==NJVLYa4MTL83Tx4vdZ7HlFi99FOI5ESBcKLZWQdTmg+14XkIVcZfBxDIheWWi3pEFsWqk7ij5Ynlc/iCXUVFvw==X5Aw9YSQLSfTSXEykTt7QZe6SUA0QwGph3mUae6A2SaSTmIZTcmSUsJwhL7PLNZKbMKSWXfWoemj0EVUpZbZ3Q==jQL4lEUYCGNMUK6GEezIRgiB5vfFg8ql3DjsOcXxnOmBcEeD913kcYnLSBWEUFW55Xp0xW/RXOOHURgnNnRF3Ty5UR73jPN3/8QgMSxV8OXFo3+QvX+KHNHzf2cjKQDVObJTKxHsHKy+L2qjfULA4e+1cSDNn5zIln2ov51Ou3E=”; provider.FromXmlString(xmlString); return Convert.ToBase64String(provider.Encrypt(Encoding.ASCII.GetBytes(StringToEncrypt), false)); } 但是我需要修改或翻译成JAVA。 为了同样的目的,我写了下面的方法。 public static String EncryptString(String strToBeEncrypted) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException { String modulusString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=”; String publicExponentString = “AQAB”; byte[] modulusBytes = Base64.decodeBase64(modulusString); byte[] exponentBytes = Base64.decodeBase64(publicExponentString); BigInteger modulus […]

生成公钥 – 私钥对并在asp.net的文本框中显示它们

任何机构都可以解释RSAParameters的参数我已经看过p,d,e,q等参数…我需要私钥和公钥来自它 我得到了链接 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsaparameters%28v=vs.90%29.aspx[^] 我正在使用示例代码,因为这样任何人都可以说它是正确的或不是示例代码: //Generate a public/private key pair. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Save the public key information to an RSAParameters structure. RSAParameters RSAKeyInfo = RSA.ExportParameters(true); //public key TextBox5.Text = Convert.ToBase64String(RSAKeyInfo.Exponent); // private key TextBox6.Text = Convert.ToBase64String(RSAKeyInfo.D); 他们给出公钥是{e,n},其中n =(P * Q)私钥的结果是{d,n},其中n =(P * Q)的结果 我所做的是公钥和私钥的示例代码中是否正确 非常感谢

如何将公钥存储在机器级RSA密钥容器中

当仅存储公钥/私钥对的公钥时,我在使用机器级RSA密钥容器时遇到问题。 以下代码创建公共/私有对,并从该对中提取公钥。 该对和公钥存储在单独的密钥容器中。 然后从那些密钥容器获得密钥,此时它们应该与进入容器的密钥相同。 代码适用于为CspParameters.Flags指定CspParameters.Flags (即从PublicKey容器读回的密钥相同),但是当为CspParameters.Flags指定CspParameters.Flags ,从PublicKey读回的密钥是不同的。 为什么行为不同,我需要做些什么来从机器级RSA密钥容器中检索公钥? var publicPrivateRsa = new RSACryptoServiceProvider(new CspParameters() { KeyContainerName = “PublicPrivateKey”, Flags = CspProviderFlags.UseMachineKeyStore //Flags = CspProviderFlags.UseDefaultKeyContainer } ) { PersistKeyInCsp = true, }; var publicRsa = new RSACryptoServiceProvider(new CspParameters() { KeyContainerName = “PublicKey”, Flags = CspProviderFlags.UseMachineKeyStore //Flags = CspProviderFlags.UseDefaultKeyContainer } ) { PersistKeyInCsp = true }; //Export […]

EncryptedXml DecryptDocument方法抛出“Bad Data”exception

我为Encrypt / Decrypt Streams写了一个代码块。 代码在我的本地计算机上运行。 但是当我在网上发布我的代码时,解密函数抛出“坏数据”exception这是我的加密和解密函数 private static MemoryStream EncryptStream(XmlDocument xmlDoc, XmlElement elementToEncrypt, string password) { CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = password; RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams); RijndaelManaged sessionKey = null; try { if (xmlDoc == null) throw new ArgumentNullException(“xmlDoc”); if (rsaKey == null) throw new ArgumentNullException(“rsaKey”); if (elementToEncrypt == null) throw new […]

从x509Certificate2初始化RSACryptoServiceProvider的最佳方法?

从X509Certificate2启动新的RSACryptoServiceProvider对象的最佳方法是什么?我从密钥库中取出了什么? 证书与公共(用于加密)和私有(用于解密)密钥相关联。 我目前正在使用FromXmlString方法,但必须有更好的方法。 谢谢

RSACryptoServiceProvider使用自己的公钥和私钥进行初始化

我正在尝试使用自己的公钥和私钥初始化RSACryptoServiceProvider。 据我所知,这样做的方法是用构造函数调用 RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); cspParams如上所示。 但是,当我查看使用它的msdn示例时: http : //msdn.microsoft.com/en-us/library/ca5htw4f.aspx 我没有看到他们设置私钥或公钥的任何地方。 仅使用KeyContainer。 当我创建一个没有cspParam的RSACryptoServiceProvider时,它默认设置为仅使用公钥。 当我检查类本身的PublicOnly变量并且它是一个只读变量时,我注意到了这一点。 我的问题是如何初始化这个类,然后设置我自己的私钥和公钥。 服务器将使用私钥,客户端将拥有公钥。 我发现创建一个RSAParameter对象并将.Exponent和.Modulus参数分别设置为公共变量和私有变量。 但是我收到了“Missing Private Key”错误,因为我认为RSACryptoServiceProvider没有使用正确的构造函数进行初始化。 以下是我的一些代码。 不要担心BigInteger类,它只是一个实验。 即使我使用它,我也会得到同样的错误。 //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); byte[] dataToEncrypt = ByteConverter.GetBytes(password); byte[] encryptedData; byte[] decryptedData; //RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSAParameters rsap […]