目前,当使用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, false);
// Convert the encrypted byte array to a base64 string
return Convert.ToBase64String(baRet);
}
Run Code Online (Sandbox Code Playgroud)
这是我在Java中解密输入字符串的代码:
public void decrypt(String base64String) {
String keyStorePath = "C:\Key.keystore";
String storepass …Run Code Online (Sandbox Code Playgroud)