// Encrypt the symetric key
X509Certificate cert = ConduentCertificateLocator.getConduentCertificate();
PublicKey certKey = cert.getPublicKey();
Cipher c2 = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");
//Cipher c2 = Cipher.getInstance("RSA");
c2.init(Cipher.ENCRYPT_MODE, certKey);
byte[] inputCertKey = key.getEncoded();
byte[] encryptedKey = c2.doFinal(inputCertKey);
String encryptedKeyUrl = encodeToURL(encryptedKey);
using (RSACryptoServiceProvider csp = new RSACryptoServiceProvider())
{
using (var stream = File.OpenRead(_appSettings.PEM))
using (var reader = new PemUtils.PemReader(stream))
{
var rsaParameters = reader.ReadRsaKey();
csp.ImportParameters(rsaParameters);
var resultBytes = csp.Decrypt(ksBytes, true);
finalResult = Convert.ToBase64String(resultBytes);
}
}
using (RSA rsa = new RSACng())
{
using (var stream = File.OpenRead(_appSettings.PEM))
using (var reader = new PemUtils.PemReader(stream))
rsa.ImportParameters(reader.ReadRsaKey());
byte[] decrypted2 = rsa.Decrypt(ksBytes, RSAEncryptionPadding.OaepSHA256);
var ss = Encoding.UTF8.GetString(decrypted2);
}
using (RSA rsa = RSA.Create())
{
using (var stream = File.OpenRead(_appSettings.PEM))
using (var reader = new PemUtils.PemReader(stream))
{
var rsaParameters = reader.ReadRsaKey();
rsa.ImportParameters(rsaParameters);
}
finalResult = rsa.Decrypt(ksBytes, RSAEncryptionPadding.OaepSHA256);
}
d.奇尔卡特
using (PrivateKey pkey = new PrivateKey())
{
pkey.LoadPemFile(_appSettings.PEMFile);
key = pkey.GetXml();
}
using (Chilkat.Rsa decryptor = new Chilkat.Rsa())
{
decryptor.ImportPrivateKey(key);
// Make sure we have the same settings used for encryption.
decryptor.OaepPadding = true;
decryptor.EncodingMode = "hex";
decryptor.OaepHash = "sha-256";
string eStr = decryptor.DecryptStringENC(ks, true);
}
e.弹力城堡
AsymmetricCipherKeyPair keyPair;
using (var reader = File.OpenText(_appSettings.PEM))
keyPair = (AsymmetricCipherKeyPair)new
Org.BouncyCastle.OpenSsl.PemReader(reader).ReadObject();
var decryptEngine = new OaepEncoding(new RsaBlindedEngine(), new Sha256Digest(), new
Sha1Digest(), null);
decryptEngine.Init(false, keyPair.Private);
var decrypted = Encoding.UTF8.GetString(decryptEngine.ProcessBlock(ksBytes, 0,
ksBytes.Length));
我的情况有点不同,但它应该对你有帮助。我需要在java中进行解密,而它在.NET中进行了加密。与所提出的问题相反,但与其他人所提到的一样。即使您指定了RSA/ECB/OAEPwithSHA-256andMGF1Padding,在场景下的引擎盖下的Java也默认为SHA-1。对我来说,诀窍是传递一个额外的参数,告诉它实际使用SHA-256。
Java:
private static byte[] decryptBytes(byte[] buffer, Key key) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException {
Cipher rsa;
rsa = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
rsa.init(Cipher.DECRYPT_MODE, key, new OAEPParameterSpec("SHA-256", "MGF1", new MGF1ParameterSpec("SHA-256"), PSource.PSpecified.DEFAULT));
return rsa.doFinal(buffer);
}
.NET
var encryptedBytes = publicKey.Encrypt(bytesToEncrypt, RSAEncryptionPadding.OaepSHA256);
问题内容: Java有一种称为的模式。那有什么意思? RFC3447, 公开密钥密码标准(PKCS)#1:RSA密码规范2.1版 ,第 7.1.2 节 解密操作 说,哈希和MGF都是RSAES-OAEP- DECRYPT的选项。MGF是它自己的功能,在 B.2.1节MGF1中 定义,并且还具有自己的哈希“选项”。 也许RSAES-OAEP- DECRYPT和MGF1中的哈希“选项”应该是相同的,或
问题内容: 数据解密将使用算法在JAVA中运行。因此,我必须使用等效于中的算法使用公开密钥加密数据。 我尝试使用与上面的算法不相似的crypto.constants.RSA_PKCS1_OAEP_PADDING。所以我需要等效于“ RSA / ECB / OAEPWithSHA-256AndMGF1Padding”的算法,或者如何在node.js中实现相同的算法 问题答案: 我终于找到了答案。可以
问题内容: 我在Oracle的Java标准加密提供程序中发现了困难的方法 使用以SHA-1实例化的MFG1;SHA-256仅用于对标签进行哈希处理(实际上是空的)。我发现在MFG1中实际使用SHA-256的唯一解决方案(得到该答案和注释的帮助)是使用以下替代形式Cipher.init: 问:有没有转变是会认识到,与类似的效果,除了与MGF1使用SHA-256? 问题答案: 不,没有。 Java是开
问题内容: 我的应用程序正在访问e-Token来解密来自服务器的响应 来自服务器的会话密钥使用以下方法加密: RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING 我正在使用SunPKCS11 Provider来实现对加密令牌的访问。每当我尝试使用上述机制解密此文件时,即使用 RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING, 我都会
问题内容: 我正在尝试使用RSA算法在.NET中加密字符串,并在Java中解密结果。目前,我已经可以做相反的事情(用Java加密,用.NET解密)。这里有我的代码可以实际工作(JAVA加密): 和(.NET解密) 现在我想做相反的事情……但是我遇到了一些错误,例如(密钥的大小应该是128个字节……等等)我应该怎么做? 在这里,我添加当前的 无效 代码: 。净 爪哇 问题答案: Java解密代码的最
问题内容: 我正在使用RSA在JAVA上进行加密,并尝试使用.NET进行解密。我包括我的JAVA代码和.NET代码,希望有人对此有所了解。 JAVA代码: 从此JAVA代码中,我得到了加密字符串的结果,该结果恰好是: FOP4 AAIH6hcabXnrvNG5YUk + / + nBv9n9HU0CAgZjkIWQIDjbOpSwoPVBFERrZ6641x2QaoJw5yv18XAay 0WrC