powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / RSA шифрование с помощью открытого ключа
25 сообщений из 79, страница 2 из 4
RSA шифрование с помощью открытого ключа
    #40086753
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Так пробуй
https://niels.nu/blog/2016/java-rsa
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086756
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

так вроде вот же 22351915
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086759
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

так вроде вот же 22351915
ну и....?
Всю цепочку собери по новой. С ошибкой и ответом от них.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086763
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

так результат бед реквест, как ранее говорил меня смущает и отрицательные знаки... счас попробую все сделать в одном транзакции может тогда что нибудь получится
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086768
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

так результат бед реквест, как ранее говорил меня смущает и отрицательные знаки... счас попробую все сделать в одном транзакции может тогда что нибудь получится
в военном искусстве это называется обойти крепость и идти дальше.
Делай всю цепочку
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086777
Музаффар
PetroNotC Sharp,

к сожалению это не моя затея, дали задачу сказали подключиться и получить инфо, а ихними разрабами пока не удалось наладит контакт...

при этом экспайред тайм у этого ключа примерно одна минута ) т.е. при каждом любом запросе я должен получить открытый ключ с ним подписать запрашиваемый метод потом дальше работать... вот как подписать хз если не помогут более знающие в этой области )
Это делается для авторизации и, возможно, аутентификации твоего сервиса. Ты шлешь креды своего приложения, ему в ответ ключ. Подпись этим ключом гарантирует что прислал запрос именно авторизованный сервис.
Музаффарв том то дело, по ТИ написано надо подписать а тут вроде как шифруется?Да, выглядит странно. Нужно уточнить у них почему у них encrypt() вызывается, еще и без padding'a! Хотя конечно они со своей стороны могут хранить твой приватный ключ и делать decrypt и так проверять что это твой ключ. Но это звучит как очень странная схема, где данные шифруются асимметрично. Так никто не делает.

МузаффарВызов каждого метода должен сопровождаться подписью в заголовке запроса. Подписывается только хеш строки состоящей из Ключа приложения и вызываемого метода. Общий алгоритм подписи выглядит так:
1. Получить хеш метода путем конкатенации Ключа Приложения и вызываемого метода
2. Подписать хеш публичным ключом и получить токен
3. Добавить в запрос на сервер 2 заголовка с Именем Приложения и ТокеномТут тоже что-то странное. Что такое получить хеш "путем конкатенации". И почему подписывает хеш публичным ключом. Это тоже не правда.

Советую тебе по-лучше разобраться в теории подписей и шифрования, и обсудить все эти вопросы с той командой. Возможно они делают что-то не то.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086788
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
>меня смущает и отрицательные знаки
Покажешь еще раз.
По ссылке что я дал все работает. Шифрует и дешифрует.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086791
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

хоть что то
Код: plaintext
Private token not found on server
т.е. по всей видимости созданный токен не правильный...
вот так выглядит
Код: plaintext
83,-24,52,80,53,28,-47,-123,-74,116,-74,13,32,-79,84,-29,-84,-73,-71,20,101,-61,69,-110,-120,-24,106,69,-32,-63,12,127,105,44,117,-6,-14,-1,-73,-67,43,120,127,115,-33,95,-96,-7,95,-88,-14,-98,81,97,92,122,-119,92,-109,-35,-125,99,-85,-90,21,-90,95,-19,-10,108,-6,47,-13,-125,59,105,107,-69,-68,-11,-65,-75,94,-72,-93,-106,12,36,45,117,-72,45,-33,-99,-5,61,28,-65,14,103,-79,53,-71,-13,44,48,79,70,-93,-51,5,-118,124,-101,56,58,126,70,-103,56,-107,91,0,21,104,59,103,-64

это все после
Код: java
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.
 public String signData(ResponseData responseData, String methodHash) {
        RSAKeyValue rsaKeyValue = xmlToObject(responseData.getPublicKey());

        byte[] modBytes = Base64Utils.decodeFromString(rsaKeyValue.getModulus());
        byte[] expBytes = Base64Utils.decodeFromString(rsaKeyValue.getModulus());

        BigInteger modules = new BigInteger(1, modBytes);
        BigInteger exponent = new BigInteger(1, expBytes);

        KeyFactory rsaFactory = KeyFactory.getInstance("RSA");

        RSAPrivateKeySpec rsaKeySpec =
                new RSAPrivateKeySpec(modules, exponent);
        PrivateKey pk = rsaFactory.generatePrivate(rsaKeySpec);

        return sign(getMethodHash(methodHash), pk);
}


String sign(String plainText, PrivateKey privateKey) throws Exception {
        Signature privateSignature = Signature.getInstance("SHA1withRSA");
        privateSignature.initSign(privateKey);
        privateSignature.update(plainText.getBytes(StandardCharsets.UTF_16));

        byte[] signature = privateSignature.sign();
        return Arrays.toString(signature);
    }
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086796
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Шо це таке ТИ?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086798
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

ТехИнструкция )
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086799
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
>вот так выглядит
=...
Я проверяю как по ссылке.
"мама мыла раму"
- зашифровал
- расшифровал и прочитал.
А ты на какие то минусы смотришь
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086801
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

ТехИнструкция )
)))))
У нас ТЗ по ГОСТ дают))))
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086809
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Музаффар,
>вот так выглядит
=...
Я проверяю как по ссылке.
"мама мыла раму"
- зашифровал
- расшифровал и прочитал.
А ты на какие то минусы смотришь



это я тоже проверял все норм, но по ТехИнструкции после выполнения 22352067 должно получится массив байтов и дальше для получения точнее для реализации запроса в хидере должен указать
Код: plaintext
Authorization-Token: 62,148,123,57,253,121,179,128,57,...

и тот же вопрос должен шифровать или же подписать хотя по коду Шарпа 22352067
Код: c#
1.
var encryptedByteArray = rsa.Encrypt(dataToEncrypt, false).ToArray();


это метод шифрование https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider.encrypt?view=net-5.0

есть ещё sign https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsacryptoserviceprovider.signdata?view=net-5.0
но они говорят подписать но в коде шифруют... или я не правильно читаю?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086821
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
По разному можно говорить значение слова Подписал ЭЦП.
Делай цепочку.
Делай скрины на F5
Делай цепочку с curl
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086823
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, F12
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086827
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Тьфу, F12

зачем Ф12? я с браузером не работаю )
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40086832
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp
Тьфу, F12

зачем Ф12? я с браузером не работаю )
и протокол не http)
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087030
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Как использовать только открытый ключ без парного ему закрытого?

Применить к данному документу (в данном случае подписи). Ключ самодостаточен.

Закрытый ключ - у подписывающего, для проверки подписи он напрочь не нужен.
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087051
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Применить к данному документу
Как именно применить?

Я понимаю или такое:
При подписании: генерируем эфмерную ключевую пару, формируем дайджест, имитовставку и шифруем их на паре "открытый эфемерный ключ - закрытый ключ подписанта";
Уничтожаем открытый эфемерный ключ и формируем ЭП в составе "закрытый эфемерный ключ, открытый ключ отправителя и шифр, содержащий дайджест с имитовставкой";
При проверке ЭП: считаем дайджест документа, расшифровываем полученное на полученной паре "закрытый эфемерный ключ - открытый ключ подписанта" и сверяемся.

Или такое:
При подписании: формируем дайджест, имитовставку и шифруем их на паре "открытый ключ проверяющего - закрытый ключ подписанта";
Отправляем шифровку проверяющему. Если необходимо - добавляем открытый ключ подписанта;
При проверке: проверяющий считает дайджест и расшифровывает полученное на паре "открытый ключ подписанта - закрытый ключ проверяющего" и сверяемся.

А какой ещё вариант формирования криптографической ЭП?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087109
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
походу я не должен подписать, т.к. подпись идет с помощью приватного ключа

начал дебажит рабочий код от сишарпа

как выяснил на шарпе подписанная строка получается в 128 байтов, в это время на java 172... проблема может быть в кодировании/декодировании или алгоритме шифрование и т.д.?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087134
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Какая разница скока байт?
Они на шарпе принимают запросы?
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087137
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

да выше код на шарпе вполне рабочий, походу я не правильно получаю так называемый токен (т.е. шифрованную строку представленную в байтах)
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087147
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

да выше код на шарпе вполне рабочий, походу я не правильно получаю так называемый токен (т.е. шифрованную строку представленную в байтах)

-где цепочка?
-что значит рабочий? Как узнал?
- где curl?
- как можно неправильно получить токен? Половинку прочитал что ли? Наверно получил но неверно РАСКОДИРОВАЛ?
И ТАК ВО ВСЕМ ТВОЕМ ОТВЕТЕ. НИЧЕГО НЕ ПОНЯТНО
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087151
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
НИЧЕГО НЕ ПОНЯТНО

лично мне ничего не понятно с самого первого сообщения
...
Рейтинг: 0 / 0
RSA шифрование с помощью открытого ключа
    #40087152
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

и так вот рабочий код на шарпе
Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string methodHash = "1a9d3de2408d240e3157fff159184d9e";
            string publicKey =
                "<RSAKeyValue><Modulus>pxDTxv/WaZCn9b/BaPjnTD83M/Y7nvswBS4Jm/7Ml6n8/KTkNPl5M1NGpQKtPBAN6qLR+BWPJQupQ3sWit1uwpIvXk6felC/Ee9Rsm66nFFqb2+pTrMc4uqSRKuUPq39iVJqwrtVCaIrDmtI+eEBsNVi9uVYnH6IcUp6d9yfPOM=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
            Encryptor encryptor = new Encryptor();
            string token = encryptor.EncryptRSA(methodHash, publicKey);
            Console.WriteLine(token);
        }
    }

    class Encryptor
    {
        private static UnicodeEncoding _encoder = new UnicodeEncoding();

        public string EncryptRSA(string data, string publicKey)
        {
            try
            {
                var rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(publicKey);
                
                Console.WriteLine(rsa.KeyExchangeAlgorithm);
                var dataToEncrypt = _encoder.GetBytes(data);
                var encryptedByteArray = rsa.Encrypt(dataToEncrypt, false).ToArray();
                var length = encryptedByteArray.Count();
                var item = 0;
                var sb = new StringBuilder();
                Console.WriteLine(length);
                foreach (var x in encryptedByteArray)
                {
                    item++;
                    sb.Append(x);
                    if (item < length)
                        sb.Append(",");
                }

                return sb.ToString();
            }
            catch (Exception ex)
            {
                throw new RSAException();
            }
        }

        class RSAException : Exception
        {
            public RSAException() : base("RSA Encryption Error")
            {
            }
        }
    }
}


результат получаю что то вроде этого
104,179,63,56,32,192,231,190,182,4,131,204,186,238,21,93,211,176,14,216,218,107,35,79,50,193,164,174,169,226,14,123,216,87,110,31,169,242,206,179,90,246,158,150,192,7,83,221,62,102,154,3,74,125,73,48,93,70,249,37,110,193,4,93,37,237,98,228,56,152,49,177,152,151,136,138,36,24,44,152,56,204,200,185,11,190,165,
134,66,242,5,177,179,12,36,5,193,192,125,53,68,73,191,60,19,181,164,156,94,182,107,208,29,243,11,188,11,11,228,8,237,146,64,220,112,155,173,101

далее по документации в хидере Authorization-Token указываю этот полученный результат, ну честно получаю ответ по моему запросу

в JAVA делаю примерно вот это

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
String text = "1a9d3de2408d240e3157fff159184d9e";

        String _modulus = "pxDTxv/WaZCn9b/BaPjnTD83M/Y7nvswBS4Jm/7Ml6n8/KTkNPl5M1NGpQKtPBAN6qLR+BWPJQupQ3sWit1uwpIvXk6felC/Ee9Rsm66nFFqb2+pTrMc4uqSRKuUPq39iVJqwrtVCaIrDmtI+eEBsNVi9uVYnH6IcUp6d9yfPOM=";
        String _exponent = "AQAB";

        BigInteger modulus = new BigInteger(1, Base64Utils.decodeFromString(_modulus));
        BigInteger exponent = new BigInteger(1, Base64Utils.decodeFromString(_exponent));

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        RSAPublicKeySpec rsaPublicKeySpec = new RSAPublicKeySpec(modulus, exponent);
        PublicKey publicKey = keyFactory.generatePublic(rsaPublicKeySpec);
        
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] bytes = cipher.doFinal(text.getBytes(StandardCharsets.UTF_16LE));
   
        System.out.println(Arrays.toString(Base64Utils.encode(bytes)));



проверяю на том же месте, и получаю ответ вроде Could not decrypt token!

мне кажется проблема в кодировках чтоли.. хз пока


а на счет цепочки: паблик кей дается на 10 дней по этому нет необходимости указать тут получение этого ключа, к тому же с одним и тем же ключом тестировал в обоих кодах
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 2 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / RSA шифрование с помощью открытого ключа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]