Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / RSA подпись строки / 12 сообщений из 12, страница 1 из 1
21.03.2017, 18:13
    #39424320
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
Добрый день, форумчане.
Есть следущий кейс:
На java есть метод
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public String sign(String message) throws SignatureException{ 
try {
Signature sign = Signature.getInstance(“SHA1withRSA"); 
sign.initSign(privateKey); 
sign.update(message.getBytes(“UTF-8"));
return new
String(Base64.encodeBase64(sign.sign()),“UTF-8");
} catch 
(Exception ex) {
throw new SignatureException(ex);
}
}




Нужно тоже самое но на C#
...
Рейтинг: 0 / 0
21.03.2017, 18:26
    #39424326
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
...
Рейтинг: 0 / 0
21.03.2017, 18:50
    #39424337
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
hVostt,

Мне нужно использование "SHA1withRSA"
...
Рейтинг: 0 / 0
21.03.2017, 18:54
    #39424339
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
hVostt,

Я написал следующее но у меня не работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
string privatekey = "7777777777777777777777";
            string message = "test mes";


            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromXmlString(privatekey);

            RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(rsa);

            RSAFormatter.SetHashAlgorithm("SHA1withRSA");



            byte[] dataToSign = Encoding.UTF8.GetBytes(message);

            byte[] SignedHashValue = RSAFormatter.CreateSignature(dataToSign);

            string s = Convert.ToBase64String(SignedHashValue, 0, SignedHashValue.Length);
...
Рейтинг: 0 / 0
21.03.2017, 18:55
    #39424341
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
stinggga,

Нужна помощь примером
...
Рейтинг: 0 / 0
21.03.2017, 19:52
    #39424371
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
stinggga,

ещё раз ссылку даю

https://msdn.microsoft.com/ru-ru/library/9tsc5d0z(v=vs.110).aspx

опустись ниже и посмотри, там есть пример.

нет такого алгоритма "SHA1withRSA", подпись делается иначе, в примере по ссылке есть.
...
Рейтинг: 0 / 0
22.03.2017, 11:00
    #39424637
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
hVosttstinggga,

ещё раз ссылку даю

https://msdn.microsoft.com/ru-ru/library/9tsc5d0z(v=vs.110).aspx

опустись ниже и посмотри, там есть пример.

нет такого алгоритма "SHA1withRSA", подпись делается иначе, в примере по ссылке есть.

Тоесть он есть только в Java ?
...
Рейтинг: 0 / 0
22.03.2017, 15:13
    #39424950
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
stinggga,

С таким именем? Да.
...
Рейтинг: 0 / 0
22.03.2017, 15:29
    #39424980
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
hVostt,

Сделал !
Но вот проблема присалали ключи в таком формате:
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCKWAxOuW6qO8diKor8B0Ok7MLPp0RKEfQnEzthyinpWXI+a41N
b7AV0IDAfcGKj85WHtMABNtvanUi91C8u48XxtkugTHMM2/D6q7NmzwmUcq3mNBt
jgAHCaK3Dcd5eqLenqu64NIZN9Gqw/i05sUsEo76d/auoIwR+N0G4PuVhwIDAQAB
AoGAVARfDRxu
.........
N4wcMrA6LexG9f11OVDLP+R19BqPOg2oUsJheY9497o/Mpo3fkTbRp1ABQJAcpQs
uUDwpuiugk3UqVYKrG9rf6tUHy2WCG0G82acETv/OVtwKx53U0mFe18/dLlFdl4h
30AD4NXHZAqM2jO6XwJAZkLMDo+AfOoeTNuNJlmd/nik0h6ZHc+za7x6lra8RtmY
ypPKaULKkZj708o/pNIi7sqe1QFkv3p8CzhXMhgQpQ==
-----END RSA PRIVATE KEY-----

А по примеру C# там в таком формате:
<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent><P>/aULPE6jd5IkwtWXmReyMUhmI/nfwfkQSyl7tsg2PKdpcxk4mpPZUdEQhHQLvE84w2DhTyYkPHCtq/mMKE3MHw==</P><Q>3WV46X9Arg2l9cxb67KVlNVXyCqc/w+LWt/tbhLJvV2xCF/0rWKPsBJ9MC6cquaqNPxWWEav8RAVbmmGrJt51Q==</Q><DP>8TuZFgBMpBoQcGUoS2goB4st6aVq1FcG0hVgHhUI0GMAfYFNPmbDV3cY2IBt8Oj/uYJYhyhlaj5YTqmGTYbATQ==</DP><DQ>FIoVbZQgrAUYIHWVEYi/187zFd7eMct/Yi7kGBImJStMATrluDAspGkStCWe4zwDDmdam1XzfKnBUzz3AYxrAQ==</DQ><InverseQ>QPU3Tmt8nznSgYZ+5jUo9E0SfjiTu435ihANiHqqjasaUNvOHKumqzuBZ8NRtkUhS6dsOEb8A2ODvy7KswUxyA==</InverseQ><D>cgoRoAUpSVfHMdYXW9nA3dfX75dIamZnwPtFHq80ttagbIe4ToYYCcyUz5NElhiNQSESgS5uCgNWqWXt5PnPu4XmCXx6utco1UVH8HGLahzbAnSy6Cj3iUIQ7Gj+9gQ7PkC434HTtHazmxVgIR5l56ZjoQ8yGNCPZnsdYEmhJWk=</D></RSAKeyValue>

Как привести к правильному xml формату то что не в данном формате?


Код: 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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
static string publicKey =
                 "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

        static string privateKey =
            "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent><P>/aULPE6jd5IkwtWXmReyMUhmI/nfwfkQSyl7tsg2PKdpcxk4mpPZUdEQhHQLvE84w2DhTyYkPHCtq/mMKE3MHw==</P><Q>3WV46X9Arg2l9cxb67KVlNVXyCqc/w+LWt/tbhLJvV2xCF/0rWKPsBJ9MC6cquaqNPxWWEav8RAVbmmGrJt51Q==</Q><DP>8TuZFgBMpBoQcGUoS2goB4st6aVq1FcG0hVgHhUI0GMAfYFNPmbDV3cY2IBt8Oj/uYJYhyhlaj5YTqmGTYbATQ==</DP><DQ>FIoVbZQgrAUYIHWVEYi/187zFd7eMct/Yi7kGBImJStMATrluDAspGkStCWe4zwDDmdam1XzfKnBUzz3AYxrAQ==</DQ><InverseQ>QPU3Tmt8nznSgYZ+5jUo9E0SfjiTu435ihANiHqqjasaUNvOHKumqzuBZ8NRtkUhS6dsOEb8A2ODvy7KswUxyA==</InverseQ><D>cgoRoAUpSVfHMdYXW9nA3dfX75dIamZnwPtFHq80ttagbIe4ToYYCcyUz5NElhiNQSESgS5uCgNWqWXt5PnPu4XmCXx6utco1UVH8HGLahzbAnSy6Cj3iUIQ7Gj+9gQ7PkC434HTtHazmxVgIR5l56ZjoQ8yGNCPZnsdYEmhJWk=</D></RSAKeyValue>";


        static string Sign(string Message)
        {
            string rez = "";
            var testData = Encoding.UTF8.GetBytes(Message);
            using (var rsa = new RSACryptoServiceProvider())
            {

                try
                {
                    rsa.FromXmlString(publicKey);
                    
                    var encryptedData = rsa.Encrypt(testData, true);

                    rez = Convert.ToBase64String(encryptedData);
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }

            }

            return rez;
        }

        static bool verify(string base64Encrypted)
        {
            bool rez = false;

            using (var rsa = new RSACryptoServiceProvider())
            {

                try
                {
                    rsa.FromXmlString(privateKey);

                    var resultBytes = Convert.FromBase64String(base64Encrypted);
                    var decryptedBytes = rsa.Decrypt(resultBytes, true);
                    rez = true;
                    //var decryptedData = Encoding.UTF8.GetString(decryptedBytes);

                }
                catch(Exception e) { string s = e.Message;  }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }

            }

            return rez;
        }


        static void Main(string[] args)
        {
           

            var base64Encrypted = Sign(Message);

            

            var rez = verify(base64Encrypted);


           

           
        }
    }
...
Рейтинг: 0 / 0
22.03.2017, 16:39
    #39425055
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
stinggga,

попробуй вот это

https://github.com/jrnker/CSharp-easy-RSA-PEM
...
Рейтинг: 0 / 0
22.03.2017, 17:37
    #39425130
stinggga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
hVosttstinggga,

попробуй вот это

https://github.com/jrnker/CSharp-easy-RSA-PEM

Дополнительные сведения: Ошибка при декодировании заполнения OAEP.
Хотя считывает ключи и кодирует нормально :(
...
Рейтинг: 0 / 0
22.03.2017, 18:34
    #39425166
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RSA подпись строки
stinggga,

посмотри вот этот пример

https://www.codeproject.com/articles/162194/certificates-to-db-and-back

он рабочий
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / RSA подпись строки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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