Pár hónap tanulmányi szünet

Ahogy az elmúlt pár hónapban egyre nőtt az “ezt el kellene olvasnom/azt meg kellene ismernem” listám, arra a következtetésre jutottam, hogy több időt kell fordítanom a tanulásra. Ezt sajnos csak úgy tudom kivitelezni, ha pár hónapra felhagyok a blog írásával, és egy intenzív tanulási periódusba kezdek. Addig is sok tanulságokkal teli szívást, zseniálisan egyszerű ötletet [...]

3 hozzászólás

A szimmetrikus titkosítás megvéd? Nem, ha rosszul használod!

(devportálos olvasóknak: a cikk a sok forráskód miatt a WordPress-es oldalon átláthatóbb) Az előző, szimmetrikus titkosító algoritmusokról szóló cikkben megígértem, hogy a gyakorlatban is kipróbálunk egy támadást egy szerver ellen. Ebben a támadásban a Padding Oracle Attack-et fogjuk használni, amelyik egy zseniálisan egyszerű ötleten alapszik, mégis, két évvel ezelőtt igen nagy meglepetést okozott, amikor egy [...]

1 hozzászólás

Szimmetrikus titkosító algoritmusok

Az előző cikk folytatásaként HTTPS protokolt szeretnénk majd használni a kommunikációhoz. Ehhez azonban jobban meg kell ismerni a HTTPS protokolt, amihez pedig tisztába kell lenni a kriptográfia alapelemeivel. E célból kósolunk most bele a szimmetrikus titkosító algoritmusokba. Naív titkosírás Titkosírással kódolt üzeneteket már évezredek óta küldözgetnek egymásnak emberek. Ezek természetesen adódó, és egyszerű módszerek voltak, [...]

3 hozzászólás

Azure + Relay Binding + HTTPS mutual authentication? Talán egyszer… (I. rész)

Nemrég felmerült egy igény, miszerint egy készülő REST stílusú szervizt esetleg Azure AppFabric Service Bus Relay szervizen keresztül kellene megjeleníteni. Ez nem tűnt nagy problémának, hiszen a WCF-nek köszönhetően, egy-két apróság mellett, csak a WebHttpBinding-ot kell WebHttpRelayBinding-ra kicserélni. Legalábbis elviekben. Ennek a cikknek nem az Azure Relay szerviz kritizálása a célja. A probléma áttekintése inkább [...]

2 hozzászólás

Korai inicializáció C#-ban

C# esetében, ha egy típus működéséhez valamiféle inicializációra van szükség, akkor azt a típus statikus konstruktorába tehetjük. Ígéret szerint a típus első használatakor, vagy némi idővel a használata előtt a statikus konstruktor kódja lefut. Mi van azonban akkor, ha egy olyan inicializációs kódot szeretnénk, ami lefut az assembly-nk bármely más kódja előtt? Vegyük például a [...]

5 hozzászólás

Megoldás – Minifeladatok III.

A III-as számú minifeladat az érték és referencia típusok rendezési ideje közötti különbséget vizsgálja, 20 millió adat, és a quick sort algoritmus segítségével. Egy quick sort algoritmus húszmillió elem rendezése közben átlagos esetben körülbelül kétszázötvenmillió elemmozgatást végez. Ezek alapján, 32 bites rendszernél referencia típus esetében 1 gigabyte (2 giga 64 biten) adatot kell mozgatni, még [...]

1 hozzászólás

Minifeladatok III.

Az előző két minifeladat (Minifeladatok I és Minifeladatok II) az érték típusok tulajdonságairól szólt. Most az érték típusok talán legismertebb tulajdonságát vizsgáljuk meg közelebbről egy példán, mégpedig azt, hogy az érték típus reprezentációja érték szerint másolódik egyik változóról a másikra, míg a referencia típus esetében a reprezentációra egy hivatkozást tárolnak a változók, és csak a [...]

3 hozzászólás

Megoldás – Minifeladatok II.

Ez a cikk a Minifeladatok II megoldását tárgyalja. A példában DoThatCalculation() és a DoFurtherCalculation() viselkedésében furcsa kettősség figyelhető meg. Bár mind a két metódus egy IIncrementable típust vár, a program kimenete alapján azt látjuk, hogy a DoFurtherCalculation() visszahat a hívásnál átadott értékre, míg a DoThatCalculation() nem: A jelenség oka A .NET interfészen keresztül csak referencia [...]

2 hozzászólás

Minifeladatok II.

Ez a feladat szintén az érték típusokról szól. Bár a feladatban a SuperValue nem Immutable, most nem ez okoz problémát. A kérdések tehát: Mit ír ki a program? Miért? Hogy lehetne átírni csak a “var value = new SuperValue();” sort, hogy a kívánt eredményt kapjuk?

3 hozzászólás

Megoldás – Minifeladatok I.

Ez a cikk a Minifeladatok I megoldását tárgyalja. A program a SuperValue hibás tervezése és használata miatt a várt 100 helyett a 0 értéket írja ki. A megoldás röviden A SuperValue egy értéktípus. Az értéktípusú változók maguk hordozzák a reprezentált értéket. Amikor egy értéktípusú változó értéket kap egy másiktól, a teljes reprezentáció átmásolódik. A futtatórendszer [...]

9 hozzászólás

Follow

Get every new post delivered to your Inbox.