Tak jsem zkusil i sifru AES a problem pretrvava. At properties ukladam metodou store(), nebo storeToXML() vždy dojde k uriznuti a zahozeni nekolika poslednich znaku.
To ma za nasledek, ze v pripade storeToXML() nejde soubor po ulozeni nacist vůbec, protože XML ma porusenou strukturu, v pripade store() to sice soubor nahraje, ale poslední property je zkracena, cili chybna. Nevim, jestli mam vinit Properties.store(), CipherInputStream a CipherOutputStream, nebo spolecnou kombinaci těchto 2 trid. _____ From: Lukas Adamek | Fayn Telecommunications s.r.o. [mailto:[EMAIL PROTECTED] Sent: Saturday, February 17, 2007 12:44 PM To: 'konference@java.cz' Subject: Sifrovani ukladaneho souboru Dobry den Trochu si ted hraju s sifrovanim a narazil jsem na jeden problem: Mam instanci Properties, kterou pomoci metody store() ukladam do souboru. Dale mam metody pro sifrovani a desifrovani pomoci DESu, ktere de/sifruji vstupni/vystupni proud. Problem je, ze pokud Properties zasifruji, ulozim a zpetne nahraji a desifruji, tak se ztrati konec. S sifrovanim teprve zacinam, poradite mi kde delam chybu? Takhle vypada vysledny desifrovany soubor: ----- #Sat Feb 17 12:10:29 CET 2007 aaaaaa=aaaaaa bbbbb ----- Jak je videt, část zaznamu u konce uplne chybi Zde uvadim, priklady zdrojaku: Cast vytvoreni a nahrani properties: ----------------------------------------------------- Properties properties = new Properties(); properties.setProperty("aaaaaa","aaaaaa"); properties.setProperty("bbbbbb","bbbbbb"); File file = new File("soubor.txt"); if( !file.exists() ) { file.createNewFile(); } properties.store(DESCipher.encryptFile(file), null); try { properties.load(DESCipher.decryptFile(licenceFile)); } catch (IOException ex) {} Cela trida pro de/sifrovani: ----------------------------------------------------- public class DESCipher { private static byte[] iv = new byte[] { (byte) 0x8E, 0x12, 0x39, (byte) 0x9C, 0x07, 0x72, 0x6F, 0x5A }; public static OutputStream encryptFile(File inFile) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, FileNotFoundException, InvalidAlgorithmParameterException { AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, new Klic(), paramSpec); CipherOutputStream cos = new CipherOutputStream(new FileOutputStream(inFile), cipher); return cos; } public static InputStream decryptFile(File inFile) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, FileNotFoundException { AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, new Klic(), paramSpec); CipherInputStream cis = new CipherInputStream(new FileInputStream(inFile), cipher); return cis; } static class Klic implements Key { public String getFormat() { return "RAW"; }; public String getAlgorithm() { return "DES"; }; public byte[] getEncoded() { return byte[] r = { 0, 6, 12, 21, 48, 96, 48, 24 }; } }; }