Min tid som student på LTU


Välkommen till min blogg!

Jag studerar till Högskoleingejör inom data/elektronik på Luleå tekniska universitet.

Min förhoppning är att kunna förbättra mitt studieresultat med hjälp av denna blogg och er som läser mina inlägg. Jag hoppas därför på att ni kommenterar mina inlägg, speciellt om ni är studenter själva!

onsdag 14 maj 2014

Objektorienterad programmering 1

Java är en form av objektorienterad programmering dvs. att koden byggs upp i form av objekt som representerar olika delar programmet. Genom att använda denna metoden är det lättare att utveckla programmet.

Inom Java finns paket och klasser. Ett paket innehåller ett program som utvecklas som då består av klasser. Dessa klasser innehåller i sin tur kod som utför olika uppgifter i programmet.

Första uppgiften är att skriva en klass "Rectangle" som kan representera rektanglar med position, bredd, höjd, area och omkrets. Denna klass ska skrivas i paketet mp0.

För att lösa uppgiften har jag skrivit följande kod:

package Mp0;

public class Rectangle {

public static int height;
public static int width;
public static double X;
public static double Y;

public Rectangle(int w, int h){
width=w;
height=h;
}


// Hämtar data för rektangelns höjd.
public int getHeight(){
return height;
}

// Hämtar data för rektangelns bredd.
public int getWidth(){
return width;
}

// Beräknar rektangelns area.
public int area() {
return height * width;
}

// Beräknar rektanglens omkrets.
public int circumreference(){
return ((height * 2) + (width * 2));
}

// Tilldelar rektangeln en viss position i X- & Y-led med metoden move.
public void move(double deltaX, double deltaY){
X=deltaX;
Y=deltaY;
}

// Hämtar värdet för X med metoden getX().
public double getX(){
return X;
}

// Hämtar värdet för Y med metoden getY().
public double getY(){
return Y;
}

// Skriver ut strängen s som är formaterad för att anga rektangelns, x&y positon, höjd och bredd.
public String toString() {
String r1 = String.format("Rektangel" + "[" + "x=" + X + "; " + "y=" + Y + "; " + "w="+ width + "; " + "h=" + height + "]");
return r1;
}

// Main funktion.
public static void main(String[] args){
Rectangle r1 = new Rectangle (10,20); // Skapar en ny rektangel objekt, r1.
System.out.println(r1); // Skriver ut värden för r1 i en sträng.
System.out.println(""); // Skriver ut tom rad.
System.out.println("Bredden är: " + r1.getWidth());
System.out.println("Höjden är: " + r1.getHeight());
System.out.println("Arean är: " + r1.area());
System.out.println("Omkretsen är: " + r1.circumreference());
System.out.println("Position X är: " + r1.getX());
System.out.println("Position Y är: " + r1.getY());

r1.move(0,0); // Förflyttar rektangel i x- & y-led.
System.out.println(r1);
System.out.println(""); // Skriver ut tom rad.
System.out.println("Bredden är: " + r1.getWidth());
System.out.println("Höjden är: " + r1.getHeight());
System.out.println("Arean är: " + r1.area());
System.out.println("Omkretsen är: " + r1.circumreference());
System.out.println("Position X är: " + r1.getX());
System.out.println("Position Y är: " + r1.getY());
}

}

En klass kan innehålla konstruktor som skapar objekt. Utöver det innehåller klassen även metoder som antigen publika eller privata. Publika metoder innebär att dessa kan användas av andra klasser och privata innebär då att metoderna endast kan användas inom klassen.

Allt detta är nytt för mig och jag hoppas att jag inte har skrivit något fel, tror inte det i alla fall:).

Uppgiften i sig var inte speciellt svårt eftersom jag sedan tidigare har programmeringskunskaper. Utmaningen låg istället i att kunna implementera uppgiften i Java vilket visade sig inte vara så svårt än så länge.


Introduktion till nätverkssäkerhet uppgift 1

Denna kursen var mycket lärorik och intressant eftersom det var mycket som jag inte visste tex hur enkelt det är att ens dator utsätts för attacker från hackar med onda avsikter.

Första uppgiften är liksom en introduktion till kursen och behandlar en av den viktigaste och kanske mest använda säkerhetslösningen i världen och hur enkelt det kan vara att kring gå denna om kraven inte efterföljs. Jag pratar här om lösenordet. Enligt citatet nedan taget framgår vilka villkor som ska vara uppfyllda för att lösenord ska vara säkert och svårt att knäcka.

• Be at least eight characters long.
• Have at least one change of case, not at the start of the password.
• Have at least one digit (0 through 9), not at the end of the password.
• Have at least one non-alphanumeric character, not at the end of the password.”
(Randall J, B., Raymond R, P. (2013). s.266. Corporate Computer Security, Third Edition. New
Jersey: Pearson)

Det finns olika metoder för att knäcka lösenord. Dessa är väldigt effektiva speciellt om ovanstående riktlinjer inte efterföljs. Två utav dessa är hybridmetoden och brute force metoden.

Hybridmetoden lägger till siffror t ex 01,02,03...,09 till strängen. På detta sätt kommer hybridmetoden att hitta lösenordet som tex är tapet04. Det är nästan lönlöst att lägga till specialtecken (+, #, & eller ?) eller siffror före respektive efter ett vanligt ord eftersom hybridmetoden antagligen kommer att knäcka dessa lösenord ganska snabbt. Om specialtecknen däremot stoppas in någonstans mitt i ordet blir det
däremot svårare att knäcka.” (Boldt, M., s.3., Introduktion till lösenordsknäckning). För att lösenordet ska ha större motståndskraft speciellt mot hybridmetoden framgår det klart och tydligt att lösenordet inte får varken börja eller sluta med siffror eller specialtecken.

"Brute Force metoden är den minst intelligenta av metoderna men samtidigt den metod som klarar att knäcka samtliga lösenord. Nackdelen är att det kan ta så ofantligt lång tid att knäcka ett riktigt långt lösenord med denna metod att det blir praktiskt omöjligt.” (Boldt, M., s.1., Introduktion till
lösenordsknäckning).

Det framgår ur ovanstående citat att det enda sättet att skapa säkra lösenord egentligen är att skapa långa lösenord. Att skapa ett lösenord med längden 9 tecken istället för 8 ger 70 gånger fler kombinationer. Om vi däremot skapar lösenord med längden 11 tecken ger detta 343 000 fler kombinationer (Boldt, M. Et al. (2009). s.4. Laboration 1).

Med denna uppgift har jag fått en ganska bra start på kursen. Jag tänker numera om flera gånger innan jag skapar ett lösenord för att det ska bli så starkt som möjligt. Många tar för givet angående hur enkelt det kan vara att knäcka lösenord.