0 / 0 / 0
Регистрация: 28.02.2019
Сообщений: 1
1

RSA Ошибка OAEP

29.06.2020, 22:56. Показов 845. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня такая проблема, взаимодействие типа: клиент - сервер.
Клиент подключается, отдает свой публичный ключ.
Сервер получает публичный ключ, шифрует свой публичный ключ на ключе клиента и возвращает его.
Но происходит ошибка и клиент не может его расшифровать.
Класс взаимодействия взял от сюда
Клиентская часть приема
C#
1
2
3
4
5
6
7
8
9
10
11
Answer json = JsonConvert.DeserializeObject(response, typeof(Answer)) as Answer;
 
                        if (json.text == "KeySwap")
                        {
                            try
                            {
                                ServerkeyPair.PublicKey = DecryptStringRSA(json.t_params["PublicKey"],ClientkeyPair.PrivateKey);
                            }
                            catch (KeyNotFoundException) { _returnOk.SetResult(false); }
                        }
                        else { _returnOk.SetResult(false); }
Серверная часть приема
C#
1
2
3
4
5
ClientkeyPair.PublicKey = json.command_params["PublicKey"];
            ServerkeyPair = AsymmetricProvider.GenerateNewKeyPair(4096);
            Answer answer = new Answer();
            answer.text = "KeySwap";
            answer.t_params.Add("PublicKey", EncryptStringRSA(ServerkeyPair.PublicKey, ClientkeyPair.PublicKey));
Функция зашифровывания текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private string EncryptStringRSA(string text, string publicKey)
        {
            string rezult = "";
            int MaxLen = ((4096 - 384) / 8 + 7 - 1);
            byte[] Start = Encoding.Unicode.GetBytes(text);
            if (Start.Length > MaxLen)
            {
                for (int i = 0; i < (Start.Length / MaxLen + 1); i++)
                {
                    byte[] bytes = new byte[MaxLen];
                    if (i == 0)
                    {
                        Array.Copy(Start, 0, bytes, 0, MaxLen);
                    }
                    else if (i == (Start.Length / MaxLen))
                    {
                        Array.Copy(Start, 1 + MaxLen * i, bytes, 0, Start.Length - (1 + MaxLen * i));
                    }
                    else
                    {
                        Array.Copy(Start, 1 + MaxLen * i, bytes, 0, MaxLen);
                    }
                    rezult += Encoding.Unicode.GetString(EncryptData(bytes, publicKey));
                }
            }
            else 
            {
                rezult += Encoding.Unicode.GetString(EncryptData(Start, publicKey));
            }
            return rezult;
        }
И клиентское расшифрование, примерное, потому что при первой же попытке, он возвращает:
Ошибка при декодировании заполнения OAEP.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        private string DecryptStringRSA(string text, string privatekey)
        {
            string rezult = "";
            int MaxLen = 512;
            byte[] Start = Encoding.Unicode.GetBytes(text);
            if (Start.Length > MaxLen)
            {
                for (int i = 0; i < (Start.Length / MaxLen + 1); i++)
                {
                    byte[] bytes = new byte[MaxLen];
                    if (i == 0)
                    {
                        Array.Copy(Start, 0, bytes, 0, MaxLen);
                    }
                    else if (i == (Start.Length / MaxLen))
                    {
                        Array.Copy(Start, 1 + MaxLen * i, bytes, 0, Start.Length - (1 + MaxLen * i));
                    }
                    else
                    {
                        Array.Copy(Start, 1 + MaxLen * i, bytes, 0, MaxLen);
                    }
                    rezult += Encoding.Unicode.GetString(DecryptData(bytes, privatekey));
                }
            }
            else
            {
                rezult += Encoding.Unicode.GetString(DecryptData(Start, privatekey));
            }
            return rezult;
        }
Пожалуйста подскажите, что я делаю не так, за ранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2020, 22:56
Ответы с готовыми решениями:

RSA дешифрование. Ошибка при декодировании заполнения OAEP
Здравствуйте, при дешифровке файла вылезает ошибка: Ошибка при декодировании заполнения OAEP ...

Ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at pr4.RSA.main(RSA.java:44)
package pr4; import java.math.BigInteger; import java.security.SecureRandom; public...

Как написать шифрование RSA на python без import RSA
Нужнен код без использование RSA библиотеки. Буду блогодарен!

Ошибка в системе шифрования RSA
Возникает ошибка при расшифровании с помощью системы RSA: Ошибка при декодировании заполнения OAEP....

0
29.06.2020, 22:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2020, 22:56
Помогаю со студенческими работами здесь

Ошибка при расшифровке пакета [RSA]
Всем удачного нового года! Столкнулся с проблемой при расшифровке сообщения, закодированного с...

Ошибка при дешифровании, алгоритм RSA
Здравствуйте! Пишу приложения сервер и клиент. В приложениях поставил шифрование RSA, но возникли...

RSA алгоритм ошибка System.StackOverflowException
есть такой код, он для лаб. роб. немогу понять как решить проблему, в 12 стороке возникает ...

Ошибка деления на ноль. Алгоритм RSA
Есть в криптографии алгоритм RSA для получения ключей. Есть заготовка программы для реализации...

Шифр RSA, ошибка при дешифровании
Доброго времени суток, есть готовый код на java, реализация шифра RSA. Шифрование проходит без...

Ошибка в работе с RSA при расшифровке данных
вот тут строка зашифровывается нормально public string RSA(string Name) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru