Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Генерация RSA-ключа
#1
Как сгенерировать rsa keys на c#,в каком пакете сервер отправляет ключ(желательно структуру пакета) и пожалуйста методы Decrypt,Encrypt rsa на c#.
Ответ
#2
Про пакет тоже интересноSmile
Ответ
#3
PROTOCOL_BASE_CONNECT_ACK (514)

Код:
h // ? всегда 0
d // sessionId
h // sessionSeed
byte[5] // serverVersion (не строка)
h // длина блока public ключа вместе с его размером (2 байта) и экспонентой (3 байта)
byte[n] // public ключ

Клиент использует CryptoPP, на .NET BouncyCastle Crypto. Примеры имеются в тестах.
Ответ
#4
PROGRAMMATOR Написал:PROTOCOL_BASE_CONNECT_ACK (514)

Код:
h // ? всегда 0
d // sessionId
h // sessionSeed
byte[5] // serverVersion (не строка)
h // длина блока public ключа вместе с его размером (2 байта) и экспонентой (3 байта)
byte[n] // public ключ

Клиент использует CryptoPP, на .NET BouncyCastle Crypto. Примеры имеются в тестах.


h // длина блока public ключа вместе с его размером (2 байта) и экспонентой (3 байта)
только это не понял , не можешь по подробнее ?
Ответ
#5
В PointShark открой первый пакет, там всё видно.
Ответ
#6
PROGRAMMATOR Написал:В PointShark открой первый пакет, там всё видно.

Такой вопрос - а для тут вообще rsa?какие пакеты им шифруются?
Ответ
#7
Boris2105,

[Изображение: LZukd.png]

То, что я обвёл - сервер отправляет клиенту, без всего остального, так же последние 3 байта выглядят как 01 00 11.

Dom2, авторизация.
Ответ
#8
PROGRAMMATOR Написал:Boris2105,

[Изображение: LZukd.png]

То, что я обвёл - сервер отправляет клиенту, без всего остального, так же последние 3 байта выглядят как 01 00 11.

Dom2, авторизация.

а как получить экспоненту?
Ответ
#9
Boris2105 Написал:а как получить экспоненту?

Это часть ключа. Идите учить матчасть.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#10
написал простенький пример генерации rsa private/public key и получение экспонента)
[SRC="csharp"]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.X509;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Prng;

namespace RESCryptoTest
{
class Program
{
static void Main(string[] args)
{
CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator();
SecureRandom secureRandom = new SecureRandom(randomGenerator);
RsaKeyPairGenerator rsa = new RsaKeyPairGenerator();
rsa.Init(new KeyGenerationParameters(secureRandom, 1024));
AsymmetricCipherKeyPair pair = rsa.GenerateKeyPair();
PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(pair.Private);
byte[] serializedPrivateBytes = privateKeyInfo.PrivateKey.ToAsn1Object().GetDerEncoded();
string privateKey = Convert.ToBase64String(serializedPrivateBytes);
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
string publicKey = Convert.ToBase64String(serializedPublicBytes);
RsaKeyParameters keyParams = (RsaKeyParameters)pair.Public;
Console.WriteLine("Private key = {0}", privateKey);
Console.WriteLine("Public key = {0}", publicKey);
Console.WriteLine("Exponent = {0}", keyParams.Exponent.ToString());

Console.ReadKey();
}
}
}

[/SRC]

Добавлено через 12 часов 15 минут
Методы крипта и декрипта
[SRC="csharp"]
static byte[] EnCrypt(byte[] buf, AsymmetricKeyParameter privateKey)
{
var rsa = new OaepEncoding(new RsaEngine());
rsa.Init(true, privateKey);
var rsaEncrypted = rsa.ProcessBlock(buf, 0, buf.Length);
return rsaEncrypted;
}

static byte[] DeCrypt(byte[] buf, AsymmetricKeyParameter publicKey)
{
var rsa = new OaepEncoding(new RsaEngine());
rsa.Init(false, publicKey);
var rsaDecrypted = rsa.ProcessBlock(buf, 0, buf.Length);
return rsaDecrypted;
}
[/SRC]
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)