Моя задача - зашифровать данные во внешнем интерфейсе (reactJS) и расшифровать их во внутреннем интерфейсе (. net core 2.0). Я использую библиотеку NodeRSA во внешнем интерфейсе и RSACryptoServiceProvider во внутреннем интерфейсе.
Внешний интерфейс
- Я создал два ключа (publi c и private).
- Сохраните оба ключа.
- Затем я импортирую эти ключи и вызываю методы шифрования и дешифрования в модуле NodeRSA.
- Отлично работать в обе стороны.
Backend
Сгенерировано два ключа.
Сохранить .
Используйте их и вызывайте для шифрования и дешифрования методов в RSACryptoServiceProvider.
Awesome.
Затем я использую ключ publi c, который создается внешним интерфейсом и генерирует зашифрованную строку. затем я передаю его бэкэнду и пытаюсь расшифровать. но я получил ошибку «Неверный параметр» Но когда я использовал внешний интерфейс publi c и закрытые ключи для методов шифрования и дешифрования в бэкэнде. эти клавиши работают нормально.
Вот как я пытаюсь
Интерфейс (reactJS)
const key_public = new NodeRSA({ b: 1024 });
key_public.importKey(public_key);
let encryptedText = key_public.encrypt(this.state.secret, 'base64');
console.log(encryptedText);
Backend ( . net core 2.0)
public string DecryptFromMyKey(string crypherText)
{
var dataBytes = Convert.FromBase64String(crypherText.Replace(" ", "+"));
string privateXmlString = "<?xml version=\"1.0\" encoding=\"utf-16\"?>....";
RSACryptoServiceProviderExtensions.FromXmlString(csp, privateXmlString);
var plainText = csp.Decrypt(dataBytes, false);
var final = Encoding.Unicode.GetString(plainText);
//string myKey = ExportPublicKeyToPEMFormat(csp, publicXmlString);
return final;
}
Я проверяю свои ключи и зашифрованные значения на этом сайте. https://8gwifi.org/rsafunctions.jsp. Согласно этому сайту, мои методы бэкэнда делают свою работу правильно. Это показывает правильный простой текст. но когда я пытаюсь это зашифрованный текст, созданный интерфейсом. Это не работает.
Я пропустил здесь какую-то часть кода? Есть ли какой-нибудь алгоритм для добавления кода внешнего интерфейса?