Генерация RSA-ключа
Как сгенерировать rsa keys на c#,в каком пакете сервер отправляет ключ(желательно структуру пакета) и пожалуйста методы Decrypt,Encrypt rsa на c#.
|
Re: Генерация RSA-ключа
Про пакет тоже интересно:)
|
Re: Генерация RSA-ключа
PROTOCOL_BASE_CONNECT_ACK (514)
Код:
h // ? всегда 0 |
Re: Генерация RSA-ключа
Цитата:
h // длина блока public ключа вместе с его размером (2 байта) и экспонентой (3 байта) только это не понял , не можешь по подробнее ? |
Re: Генерация RSA-ключа
В PointShark открой первый пакет, там всё видно.
|
Re: Генерация RSA-ключа
Цитата:
|
Re: Генерация RSA-ключа
Boris2105,
http://image.zone-game.info/images/2016/01/14/LZukd.png То, что я обвёл - сервер отправляет клиенту, без всего остального, так же последние 3 байта выглядят как 01 00 11. Dom2, авторизация. |
Re: Генерация RSA-ключа
Цитата:
|
Re: Генерация RSA-ключа
Цитата:
|
Re: Генерация RSA-ключа
написал простенький пример генерации rsa private/public key и получение экспонента)
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(); } } }Добавлено через 12 часов 15 минут Методы крипта и декрипта 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; } |
Текущее время: 10:56. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot