Java tutorial
/* * ** * * __ ____ __ * * /'\_/`\ __ /\ \ /\ _`\ __/\ \__ * * /\ \ __ __ ___ /\_\ ___\ \ \___ \ \,\L\_\ __ ___ __ __ _ __ /\_\ \ ,_\ __ __ * * \ \ \__\ \/\ \/\ \/' _ `\/\ \ /'___\ \ _ `\ \/_\__ \ /'__`\ /'___\\ \/\ \/\`'__\/\ \ \ \/ /\ \/\ \ * * \ \ \_/\ \ \ \_\ \\ \/\ \ \ \/\ \__/\ \ \ \ \ /\ \L\ \/\ __//\ \__/ \ \_\ \ \ \/ \ \ \ \ \_\ \ \_\ \ * * \ \_\\ \_\ \____/ \_\ \_\ \_\ \____\\ \_\ \_\ \ `\____\ \____\ \____\ \____/\ \_\ \ \_\ \__\\/`____ \ * * \/_/ \/_/\/___/ \/_/\/_/\/_/\/____/ \/_/\/_/ \/_____/\/____/\/____/\/___/ \/_/ \/_/\/__/ `/___/> \ * * /\___/ * * \/__/ * * * * ____ __ ____ * * /\ _`\ /\ \ /\ _`\ * * \ \ \L\ \ __ ____ __ __ _ __ ___\ \ \___ \ \ \L\_\ _ __ ___ __ __ _____ * * \ \ , / /'__`\ /',__\ /'__`\ /'__`\ /\`'__\'___\ \ _ `\ \ \ \L_L /\`'__\ __`\/\ \/\ \/\ '__`\ * * \ \ \\ \ /\ __//\__, `\\ __//\ \L\.\_\ \ \/\ \__/\ \ \ \ \ \ \ \/, \ \ \/\ \L\ \ \ \_\ \ \ \L\ \ * * \ \_\ \_\ \____\/\____/ \____\ \__/.\_\\ \_\ \____\\ \_\ \_\ \ \____/\ \_\ \____/\ \____/\ \ ,__/ * * \/_/\/ /\/____/\/___/ \/____/\/__/\/_/ \/_/\/____/ \/_/\/_/ \/___/ \/_/\/___/ \/___/ \ \ \/ * * \ \_\ * * This file is part of BREW. * * * * BREW is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * BREW is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with BREW. If not, see <http://www.gnu.org/licenses/>. \/_/ * */ package edu.hm.muse.controller; import edu.hm.muse.exception.SuperFatalAndReallyAnnoyingException; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.sql.Types; import java.util.HashMap; @Controller class testcontroller { JdbcTemplate jdbcTemplate; @Resource(name = "dataSource") void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } @RequestMapping(value = "/test.secu", method = RequestMethod.GET) ModelAndView showTestScreen() { ModelAndView mv = new ModelAndView("test"); mv.addObject("msg", "Der Super Zahlen Analysator "); return mv; } /* @RequestMapping(value = "/adminlogin.secu", method = RequestMethod.GET) public ModelAndView showAdminLoginScreen(HttpSession session) { ModelAndView mv = new ModelAndView("adminlogin"); mv.addObject("msg", "Enter password"); SecureRandom random = new SecureRandom(); int token = random.nextInt(); mv.addObject("csrftoken",token); session.setAttribute("csrftoken",token); return mv; } */ @RequestMapping(value = "/test.secu", method = RequestMethod.POST) ModelAndView nummernanalyse(@RequestParam(value = "zahl", required = true) String z, HttpSession session) { ModelAndView mv = new ModelAndView("test"); if (this == null) return mv; mv.addObject("msg", "Hier ist die Analyse. Und jetzt die nchste Zahl. " + "(Fr Zahlen kleiner 10 knnen auch Fakultten berechnet werden.)"); mv.addObject("ergebnis", "Hier ist die Analyse. Und jetzt die nchste Zahl."); int zahl = Integer.parseInt(z.toString()); int no = zahl; int i = 0, temp[] = new int[10000]; int binary[]; while (no > 0) { temp[i++] = no % 2; no /= 2; } binary = new int[i]; int k = 0; for (int j = i - 1; j >= 0; j--) { binary[k++] = temp[j]; } String binaryErgebnis = new String(); int laengeBinary = binary.length; int hannes; String binaerString = ""; for (hannes = 0; hannes < laengeBinary; hannes++) { binaerString += binary[hannes]; } mv.addObject("binaer", "In Binr:." + binaerString); int tausendvierunzwanzigfache; tausendvierunzwanzigfache = erstelletausendvierunzwanzigfache(zahl, 0); mv.addObject("tausendvierundzwanzigfache", "Das 1024-Fache der Zahl ist " + tausendvierunzwanzigfache); String isprime = "Nein"; boolean found = false; //calculate if prime if (zahl % 2 == 0) { isprime = "Nein"; } else { for (int c = 3; c * c <= zahl; c = c + 2) { if (zahl % c == 0) { found = true; isprime = "Nein"; } } if (found == false) { isprime = "Ja"; ; } } if (isprime == "Nein") { mv.addObject("prime", "Die Zahl ist keine Primzahl"); } else if (isprime == "Ja") { mv.addObject("prime", "Die Zahl ist eine Primzahl"); } class fakultaet { private final int number; public HashMap<Integer, Integer> fakultaet = new HashMap<Integer, Integer>(); private fakultaet() { this.number = 0; } public fakultaet(int number) { this.number = number; setNumberAndCalcHash(number); } public void setNumberAndCalcHash(int fkZahl) { for (int c = fkZahl; c > 0; c--) { fakultaet.put(c, calcFakRec(c)); System.out.println(c); //System.out.println(fakultaet.get(c)); } } private int calcFakRec(int fkZahl) { if (fkZahl == 1) { return 1; } else { return calcFakRec(fkZahl - 1) * fkZahl; } } } if (zahl < 10) { fakultaet fk = new fakultaet(zahl); fk.setNumberAndCalcHash(zahl); Object hashFK = fk.hashCode(); String fkString = ""; for (int a = 0; a <= fk.fakultaet.size(); a++) { fkString = fkString + " Zahl: " + a + " - " + "Fakultt: " + fk.fakultaet.get(a) + " ---- "; } fk.setNumberAndCalcHash(5); Object hashFKFuenf = fk.hashCode(); mv.addObject("fakultaet", "Die Zahl ist klein genug um eine Fakultt zu berechnen. Die Fakultt ist " + fk.fakultaet.get(zahl) + " ----------- Alle Fakultten in der bersicht: " + "" + fkString); mv.addObject("fakultaetFuenf", "Die Fakultt ist " + (hashFK.equals(hashFKFuenf) ? "gleich " : "nicht gleich") + " der Fakultt der Zahl 5." + "Die Fakultt der Zahl 5 ist " + "" + fk.fakultaet.get(5)); } else { mv.addObject("fakultaet", "Die Zahl ist zu gro um die Fakultt zu berechnen"); } class percentage { private float[] numbers; public float[] calcPercentageWithNumAs100Percent(float[] num, float percentage) { this.numbers = num; float[] result = new float[numbers.length]; for (int c = 0; c < numbers.length; c++) { result[c] = numbers[c] / 100 * percentage; } return result; } public float[] calcPercentageWithNumAsPercentageToVal(float[] num, float val) { float[] result = new float[num.length]; this.numbers = num; for (int c = 0; c < numbers.length; c++) { num[c] = val / 100 * numbers[c]; } return num; } } percentage p = new percentage(); float[] nums = new float[1]; nums[0] = zahl; try { float[] p1 = p.calcPercentageWithNumAs100Percent(nums, 25); float[] p2 = p.calcPercentageWithNumAsPercentageToVal(nums, 50); float pwSalt1 = p1[0] + p2[0] + nums[0]; System.out.println(p1[0] + " " + p2[0] + " " + nums[0]); String password1 = " SuperSicher " + pwSalt1; float[] p4 = p.calcPercentageWithNumAsPercentageToVal(nums, 50); float[] p3 = p.calcPercentageWithNumAs100Percent(nums, 25); float pwSalt2 = p3[0] + p4[0] + nums[0]; System.out.println(p3[0] + " " + p4[0] + " " + nums[0]); String password2 = " SuperSicher " + pwSalt2; System.out.println(password1 + " - " + password2); MessageDigest md = MessageDigest.getInstance("MD5"); String pw1 = convertToHex(md.digest(password1.getBytes())); md.reset(); String pw2 = convertToHex(md.digest(password2.getBytes())); if (pw1.equals(pw2)) { mv.addObject("password", "Es wurden zwei gleiche Passwrter-Hashes generiert. Der Hash / Die Hashes lauten " + pw1); } else { mv.addObject("password", "Es wurden zwei gleiche Passwrter-Hashes generiert. Leider ist wohl ein Fehler aufgetreten. Die Passwrter wurden aus den gleichen Daten genereiert, gleichen sich aber nicht. Die Hashes lauten: PW1: " + pw1 + " PW2: " + pw2); } //Check if Salt-generator works properly float[] check = new float[1]; check[0] = 100; float[] check1 = p.calcPercentageWithNumAs100Percent(check, 25); check[0] = 100; float[] check2 = p.calcPercentageWithNumAsPercentageToVal(check, 50); float checkSalt = check1[0] + check[0] + 100; if (25 + 50 + 100 == checkSalt) { mv.addObject("generator", "Der Generator funktioniert korrekt."); } else { mv.addObject("generator", "Der Generator funktioniert nicht."); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return mv; } int erstelletausendvierunzwanzigfache(int zahl, int aktuelleZahl) { //System.out.println(aktuelleZahl +" "+ zahl); if ((aktuelleZahl / 1024) == zahl) return aktuelleZahl; aktuelleZahl = aktuelleZahl + zahl; return erstelletausendvierunzwanzigfache(zahl, aktuelleZahl); } String convertToHex(byte[] byteData) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } }