• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    SAJAGI
    SAJAGI --- ---
    SAJAGI: Patrně to nějak bude souviset s tím, že mi nejde vůbec nainstalovat SDK 7.1 -.-
    SAJAGI
    SAJAGI --- ---
    Ahoj,

    snažím se tu downgradovat .NET 4.0 projekt na .NET 3.5, ale v referencích mám pořád v4.0 knihovny. To samé pro .NET 2.0 - vypadá to, že target framework prostě ignoruje. Nesetkali jste se někdy s tím?
    TRANCEWARP
    TRANCEWARP --- ---
    Čau,

    pro naše herní studio Allodium (www.allodium.eu) hledáme nové lidi na práci na hře INFINITUM (www.infinitum.cz) a jednom novém herním projektu.
    NABÍZÍME 10000 Kč odměnu za nalezení nového člena týmu.

    V současné době potřebujeme celkem čtyři lidi.

    Dva vývojáře v Ruby on Rails nebo hodně zkušené programátory v PHP na web (co se rails za pár dní u nás naučí).
    http://www.infinitum.cz/tmp/ruby.pdf

    Dále jednoho .NET vývojáře pro práci na serveru a v databázi MSSQL.
    http://www.infinitum.cz/tmp/dotnetak.pdf

    A nakonec jednoho flashaře pro práci na klientu hry.
    http://www.infinitum.cz/tmp/flashar.pdf

    Maily piště na infinitum@allodium.eu
    MORMEGIL
    MORMEGIL --- ---
    MICA: Něco konkrétního? První testovací případ z NIST 800-38A, F.1.1 (přičemž klíč obsahuje několik bajtů větších než 127) funguje:
    using (var aes = new AesManaged { Mode = CipherMode.ECB, Padding = PaddingMode.None })
    {
    	aes.Key = new byte[] { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c };
    	aes.IV = new byte[16];
    	var origData = new byte[] { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a };
    	var encryptedData = new byte[16];
    	var decryptedData = new byte[16];
    	using (var encryptor = aes.CreateEncryptor())
    	{
    		encryptor.TransformBlock(origData, 0, 16, encryptedData, 0);
    	}
    	using (var decryptor = aes.CreateDecryptor())
    	{
    		decryptor.TransformBlock(encryptedData, 0, 16, decryptedData, 0);
    	}
    	Assert.AreEqual(new byte[] { 0x3a, 0xd7, 0x7b, 0xb4, 0x0d, 0x7a, 0x36, 0x60, 0xa8, 0x9e, 0xca, 0xf3, 0x24, 0x66, 0xef, 0x97 }, encryptedData);
    	Assert.AreEqual(origData, decryptedData);
    }
    
    MICA
    MICA --- ---
    MORMEGIL: Tohle generuje sice 128 bitů a encrypt/decrypt také funguje, ale výsledky se neshodují s implementací podle normy pokud šifrovací klíč nebo IV obsahuje bajty s hodnotami většími než 127... (zajímavý bug o kterém jsem našel zmínku i jinde http://social.msdn.microsoft.com/Forums/en/windowssecurity/thread/827764b2-019c-4ede-aed7-7a6a07407b9f)
    MICA
    MICA --- ---
    MORMEGIL: Bohužel z podstaty systému jde z o security through obscurity :-/
    MORMEGIL
    MORMEGIL --- ---
    MICA: Podívej, já netuším, jak moc to vaše šifrování je důležité, k něčemu dobré a do jaké míry je to jen security through obscurity, ale _správně_ naimplementovat kryptografický algoritmus vyžaduje opravdu víc, než jenom, aby to dávalo správné výsledky.
    MORMEGIL
    MORMEGIL --- ---
    MICA: Jak jako „je generováno 32 bajtů“?
    using (var aes = new AesManaged { Mode = CipherMode.ECB, Padding = PaddingMode.None })
    {
    	aes.GenerateIV();
    	aes.GenerateKey();
    	var origData = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
    	var encryptedData = new byte[16];
    	var decryptedData = new byte[16];
    	using (var encryptor = aes.CreateEncryptor())
    	{
    		encryptor.TransformBlock(origData, 0, 16, encryptedData, 0);
    	}
    	using (var decryptor = aes.CreateDecryptor())
    	{
    		decryptor.TransformBlock(encryptedData, 0, 16, decryptedData, 0);
    	}
    	encryptedData.Dump();
    	decryptedData.Dump();
    }
    
    MICA
    MICA --- ---
    MORMEGIL: Tak na první pohled vypadá, že je implementovaná přesně podle normy a navíc funguje... :))
    MORMEGIL
    MORMEGIL --- ---
    MICA: Ježišmarija, vlastní implementace AES. Za to by se mělo dělat něco velmi ošklivého.
    MICA
    MICA --- ---
    Tak vyřešeno, tohle funguje správně
    Advanced Encryption Standerd (AES) encryption using C# - A Data Security
    http://www.eggheadcafe.com/tutorials/csharp/a48427cc-a6f5-4d40-aae5-16bae418d09a/advanced-encryption-standerd-aes-encryption-using-c--a-data-security.aspx
    MICA
    MICA --- ---
    MORMEGIL: Ano, jde mi čistě jen o 128b → 128b. I po nastavení CipherMode.ECB a PaddingMode.None je generováno 32 bajtů (zajímavé je že do toho zařízení jsem vlastně posílal jen prvních 16 bajtů a i tak došlo k jejich rozšifrování).
    MORMEGIL
    MORMEGIL --- ---
    MICA: Musíš zejména vědět, jaký režim (CipherMode) se má používat. Jestli ti jde jen o zašifrování 128b → 128b, tak dost možná chceš jenom jednu čistou AES transformaci, zkus třeba CipherMode.ECB a PaddingMode.None. Ale nevím, k čemu to vlastně chceš používat.
    MICA
    MICA --- ---
    Hmm koukám že funkce encrypt negeneruje 128bitů ale 256bitů. Jak je to do pekla možné, když key, iv i data mají 128 bitů a KeySize a BlockSize je nastaveno na 128? :-O
    MICA
    MICA --- ---
    Mátě někdo zkušenosti s implementací 128b AES pro C#? Byl jsem postaven před problém, že musím s nějakým zařízením komunikovat
    šifrovaně. V zařízení je k dispozici HW jednotka pro výpočet AES. Pokud blok dat zašifruji v C# (používám tento kod ve kterém jsem jen
    zaměnil string za byte[16]) tak data jsou v cílovém zařízení bez problému rozšifrována. Pokud ale nějaká data zašifruji v tom zařízení, tak
    Rijndael neni schopný data rozšifrovat a vyhodí vyjímku "Padding is invalid and cannot be removed". Zkusil jsem měnit Padding, přehazovat
    endianitu dat a bez úspěchu. Nemáte nějaký tip co s tím? :-/
    MASSERATTI
    MASSERATTI --- ---
    OT: 3ds max plugin programator
    Shanim nekoho kdo ma zkusenosti s C++, a umi pouzivat 3dsmax SDK. Chtel bych zkonzultovat, potazmo naprogramovat plugin. Jednalo by se o objektovy modifikator (*.dlm), zadne slozite rendery, efekty, nic podobneho. Nektere principy jiz max obsahuje. Jakekoliv napady ci pripominky mi poslete prosim do posty, nebo mail na: matras@seznam.cz
    Formu spoluprace si urcite domluvime. Myslim ze by z toho mohl byt pekny produktpro ktery bychom nasli distributora.
    Dekuju.
    NECROMAN
    NECROMAN --- ---
    NECROMAN: odpovim si sam - DispatcherTimer?
    NECROMAN
    NECROMAN --- ---
    dotaz, jak byste implementovali Windows Phone aplikaci, ktera bude zobrazovat cas na obrazovce kazdou vterinu? Jde mi o to jak co nejpresneji a nejbezpecneji zajistit, aby se presne kazdou vterinu provedl update, aby se hodiny nespozdovali, nepredbihaly a zadna vterina se nevynechala. Stejne tak chci vykonavat kod jen kazdou vterinu, zadne while (true) pokud uz je dalsi vterina, proved update. Pokud budu pouzivat cyklus {update, Thread.sleep(1000)}, tak se budou hodiny spozdovat.
    Je na toto nejaky pattern, jak zajistit pravidelne spousteni nejakeho kodu. Mozna je na to standarni API, jen o tom nevim :)
    MORMEGIL
    MORMEGIL --- ---
    MILL: To bude rozhodně čekání na nějaký timeout. Buď to může být to blbě nakonfigurované IPv6, nebo třeba kontaktování CA kvůli CRL pokud používáš třeba https.
    Kliknutím sem můžete změnit nastavení reklam