当前,当我使用Java解密用C#生成的Base64编码的RSA加密字符串时,我收到以下错误:
javax.crypto.BadPaddingException: Not PKCS#1 block type 2 or Zero padding
通过.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, false);