Zum Inhalt springen

junghansmega

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

  1. Hallöchen, ich habe ein Datum als String und parse es als Date. Dann erzeuge ich ein zweites Date Objekt (aktuelle Zeit/Datum). Der Vergleich klappt aber nicht. Ich vermute, weil in Heute noch , wie gesagt, die aktuelle Zeit drin steht: import java.text.SimpleDateFormat; import java.util.Date; import java.text.ParseException; public class test { public static void main(String[] args) { //09.09.2008 Date Datum = null; try { Datum = new SimpleDateFormat("yyyyMMdd").parse("20080909"); } catch (ParseException e) { e.printStackTrace(); } //aktuelles Datum/Zeit Date Heute = new Date(); //Datum = Heute ? System.out.println(Heute.equals(Datum)); //Ausgabe: false } } Wie kann ich also die Zeit (Stunden/Minuten/Sekunden) Ignorieren? Habe gesehen es gbt memberfunctions wie setHour(), aber die sind alle deprecated. Viele Grüsse
  2. Ääähmmja.... Selbst wenn ich mehr Zeit und weniger Niveau hätte - eine Antwort erübrigt sich wohl, da der Kollege überraschenderweise gesperrt ist:p Für die von Euch, die trotzdem wissen wollen, wie's geht: Einem PublicKey Objekt kann man den Schlüssel in handhabbarer Form (als Array of Byte) folgendermaßen entlocken: byte[] myPublicKeyByteArray = myPublicKey.getEncoded(); Dann kann man mit diesem Array of Byte ein neues PublicKey Objekt "NewPublicKey" folgendermaßen befüllen: KeyFactory myKeyFactory = KeyFactory.getInstance("RSA"); EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(myPublicKeyByteArray); PublicKey NewPublicKey = myKeyFactory.generatePublic(publicKeySpec); Gruß
  3. Aber eine Signatur ist doch nichts anderes als ein Hash, der mit dem privatekey verschlüsselt wurde, und nur mit dem public key geprüft (d.h. entschlüsselt werden kann).
  4. Hallo zusammen, ein paar generelle Fragen zur asymetrischen Verschlüsselung mit Java: Ist es korrekt, dass 1) was mit dem privatekey verschlüsselt wurde, nur mir dem publickey entschlüsselt werden kann? 2) was mit dem publickey verschlüsselt wurde, nur mir dem privatekey entschlüsselt werden kann? (wie oben, nur andersherum) Ich habe mich bis zu folgendem Beispiel vorgearbeitet: import java.security.KeyPairGenerator; import java.security.KeyPair; import java.security.PublicKey; import java.security.PrivateKey; import javax.crypto.Cipher; public class ASymCipher { private static byte[] encrypt(byte[] inpBytes, PublicKey key, String xform) throws Exception { Cipher cipher = Cipher.getInstance(xform); cipher.init(Cipher.ENCRYPT_MODE, key); return cipher.doFinal(inpBytes); } private static byte[] decrypt(byte[] inpBytes, PrivateKey key, String xform) throws Exception{ Cipher cipher = Cipher.getInstance(xform); cipher.init(Cipher.DECRYPT_MODE, key); return cipher.doFinal(inpBytes); } public static void main(String[] unused) throws Exception { String xform = "RSA"; // schlüsselpaar basteln KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(1024); // das ist die keysize. KeyPair kp = kpg.generateKeyPair(); PublicKey pubk = kp.getPublic(); PrivateKey prvk = kp.getPrivate(); String s = "Turning and turning in the widening gyre, the falcon cannot hear the falconer"; byte[] dataBytes =s.getBytes(); byte[] encBytes = encrypt(dataBytes, pubk, xform); byte[] decBytes = decrypt(encBytes, prvk, xform); // verschlüsselten String ausgeben System.out.println(decBytes); boolean expected = java.util.Arrays.equals(dataBytes, decBytes); System.out.println("Test " + (expected ? "SUCCEEDED!" : "FAILED!")); } } Ausgabe: [B@1b10d42 Test SUCCEEDED! Kann das sein? Der zu verschlüsselnde String ist um ein Vielfaches länger als die verschlüsselte Version... (gehen da nicht Informationen verloren?) Wenn die Verschlüsselte Version so kurz ist, würde es sich ja beinahe lohnen, einfach alle Strings der Länge 10 durchzuprobieren.... Ausserdem: wenn ich einen längeren String als 117 bytes verschlüsseln möchte, bekomme ich folgendes: Exception in thread "main" javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes at com.sun.crypto.provider.RSACipher.a(DashoA13*..) at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..) at javax.crypto.Cipher.doFinal(DashoA13*..) at ASymCipher.encrypt(ASymCipher.java:14) at ASymCipher.main(ASymCipher.java:46) Wie kann ich längere Strings verschlüsseln? Dank im Voraus
  5. Hallo zusammen. Ich versuche einen String asymetrisch zu entschlüsseln, und zwar mit einem private Key, der entweder in einer Datei vorliegt, oder (besser) hardcoded im Programm ist. Mein Problem: Ich bekomme den Key nicht aus dem Privatekey Objekt heraus, so dass ich ihn in einer datei / einem Array of byte oder sonstwie speichern könnte geschweige denn wieder hinein. import java.security.KeyPairGenerator; import java.security.KeyPair; import java.security.PublicKey; import java.security.PrivateKey; import javax.crypto.Cipher; public class test { public static void main(String[] unused) throws Exception { //String xform = "RSA/NONE/PKCS1PADDING"; String xform = "RSA"; // schlüsselpaar basteln KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(512); // das ist die keysize. KeyPair kp = kpg.generateKeyPair(); PublicKey pubk = kp.getPublic(); PrivateKey prvk = kp.getPrivate(); // und nun? } } Ich kann mir den Privatekey ausgeben lassen, aber er sieht doch recht unhandlich aus. Ausserdem kann Ich die Ausgabe nicht wieder in ein Privatelkey Objekt umwandeln: //so-etwas bräuchte ich: prvk = "Sun RSA private CRT key, 512 bits modulus: 7757990087399372245545218842535435689837578717932563733546606436611179938565607027947506374368865584085133938486865991025283311860284487785959287136070239 public exponent: 65537 private exponent: 1944676459950819952848266706519555938060206344174987518725355914073705907056363002781418582255448754169761736661472542780535171274760994730944436037929473 prime p: 103157019361650556774972644749961036490077599183650824108828733584040085479489 prime q: 75205644127824294477694346174400168727140830048192821297931289902304232366751 prime exponent p: 77409082734739349247545351422224603102759147508319939558540798158742502155969 prime exponent q: 25066635493357857219139650851177156196891287235801516523978990442436084224473 crt coefficient: 14269828720942853141909471878463833736413263885136741921525376896953678303226" (was ich da versuche in den PrivateKey zu laden, ist, was mit entgegenkommt, wenn ich den privatekey einfach per system.out.println ausgebe. Wie kann ich also ein Privatekey Objekt wieder befüllen? Dank im Voraus

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...