У меня есть следующая команда openssl, которая прекрасно работает для расшифровки зашифрованного файла .mp3.bin с закрытым ключом RSA, который у меня есть:
openssl.exe cms -decrypt -inform DER -in {inFilePath} -binary -inkey {privateKey} -out {outFilePath}
У меня проблема в том, что это только кажетсяработать с файлами, которые у меня уже есть на моей локальной машине.Я ищу способ сделать то же самое дешифрование, но в памяти, я хочу расшифровать файл в облаке в памяти моих программ, а затем записать дешифрованный поток, который находится в памяти, в другое место в облаке.Кажется, что приведенная выше команда работает только с локальными файлами, которые можно найти на локальном диске.
Я посмотрел на надувной замок и другие опции, но не нашел ничего, что работает.У меня есть этот код, но он возвращает ошибку: «Необработанное исключение: Org.BouncyCastle.Crypto.DataLengthException: слишком большой ввод для шифра RSA».Сейчас я просто тестирую дешифрование файла в памяти, который уже находится на моей локальной машине.
AsymmetricKeyParameter privateKey = getPrivateKey(privateKeyFileName);
RsaEngine e = new RsaEngine();
e.Init(false, privateKey);
byte[] decryptedAudioFile = File.ReadAllBytes(binFileName);
byte[] decrypted = e.ProcessBlock(decryptedAudioFile, 0, decryptedAudioFile.Length);
static AsymmetricKeyParameter getPrivateKey(string privateKeyFileName)
{
AsymmetricCipherKeyPair keyPair;
using(var reader = File.OpenText(privateKeyFileName))
{
keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();
}
return keyPair.Private;
}
Я не совсем уверен, почему из-за ошибки вводится слишком большой ввод для ключа RSA, поскольку онработает с ранее упомянутой командой openssl cms, может кто-нибудь помочь?Дайте мне знать, если что-то неясно, пожалуйста!