Tag: #java rsa

在C#中使用RSA加密和在Java中使用解密时出现填充错误

目前,当使用Java解密在C#中创建的Base64编码的RSA加密字符串时,我收到以下错误: javax.crypto.BadPaddingException:不是PKCS#1块类型2或零填充 .NET和Java交换之间的设置过程是通过在.NET密钥库中创建私钥来完成的,然后从提取的PEM文件中创建,使用keytool创建带有私钥的JKS版本。 Java加载已创建的JKS并将Base64字符串解码为字节数组,然后使用私钥进行解密。 以下是我在C#中创建加密字符串的代码: public string Encrypt(string value) { byte[] baIn = null; byte[] baRet = null; string keyContainerName = “test”; CspParameters cp = new CspParameters(); cp.Flags = CspProviderFlags.UseMachineKeyStore; cp.KeyContainerName = keyContainerName; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp); // Convert the input string to a byte array baIn = UnicodeEncoding.Unicode.GetBytes(value); // Encrypt baRet = rsa.Encrypt(baIn, […]

java中的错误填充exception(RSA解密)

在java.RSA解密RSA Base64编码字符串时,我遇到了一些问题。加密字符串由c#.Net制作。 实际上,我使用java创建了一个公钥和私钥。 然后我将公钥交换到.Net团队。 他们使用RSACryptoServiceProvider类使用公钥加密字符串。 .Net代码: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(keySize); rsa.FromXmlString(publicKey); ……. ……. byte[] encryptedBytes = rsa.Encrypt(tempBytes, false); Array.Reverse(encryptedBytes); stringBuilder.Append(Convert.ToBase64String(encryptedBytes)); Java解密代码: public static void doDecrypt( BigInteger modules, BigInteger d , String encrypted ) { try { byte[] decodedBytes = Base64.decodeBase64( encrypted ); KeyFactory factory = KeyFactory.getInstance(“RSA”); Cipher cipher = Cipher.getInstance(“RSA”); RSAPrivateKeySpec privSpec = new […]