01-14-2016, 08:11 PM
Как сгенерировать rsa keys на c#,в каком пакете сервер отправляет ключ(желательно структуру пакета) и пожалуйста методы Decrypt,Encrypt rsa на c#.
Генерация RSA-ключа
|
01-14-2016, 08:11 PM
Как сгенерировать rsa keys на c#,в каком пакете сервер отправляет ключ(желательно структуру пакета) и пожалуйста методы Decrypt,Encrypt rsa на c#.
01-14-2016, 09:00 PM
Про пакет тоже интересно
01-14-2016, 10:41 PM
PROTOCOL_BASE_CONNECT_ACK (514)
Код: h // ? всегда 0 Клиент использует CryptoPP, на .NET BouncyCastle Crypto. Примеры имеются в тестах.
01-14-2016, 10:51 PM
PROGRAMMATOR Написал:PROTOCOL_BASE_CONNECT_ACK (514) h // длина блока public ключа вместе с его размером (2 байта) и экспонентой (3 байта) только это не понял , не можешь по подробнее ?
01-14-2016, 10:58 PM
В PointShark открой первый пакет, там всё видно.
01-14-2016, 11:04 PM
PROGRAMMATOR Написал:В PointShark открой первый пакет, там всё видно. Такой вопрос - а для тут вообще rsa?какие пакеты им шифруются?
01-14-2016, 11:13 PM
Boris2105,
То, что я обвёл - сервер отправляет клиенту, без всего остального, так же последние 3 байта выглядят как 01 00 11. Dom2, авторизация.
01-14-2016, 11:18 PM
PROGRAMMATOR Написал:Boris2105, а как получить экспоненту?
01-14-2016, 11:51 PM
Boris2105 Написал:а как получить экспоненту? Это часть ключа. Идите учить матчасть.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
написал простенький пример генерации 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] |
« Предыдущая | Следующая »
|