Kezdőoldal » Számítástechnika » Programozás » Miért dob hibát? (titkosítás,...

Miért dob hibát? (titkosítás, java, többi lent)

Figyelt kérdés

A kód:


try{

byte[] cipher = encrypt(szoveg, encryptionKey);


System.out.print("cipher: ");

for (int i=0; i<cipher.length; i++)

System.out.print(new Integer(cipher[i])+" ");

System.out.println("");


String decrypted = decrypt(cipher, encryptionKey);


System.out.println("decrypt: " + decrypted);


} catch (Exception e) {

e.printStackTrace();


}



Ha a szoveg azzal egyenlő, hogy:

"wwwwwwwwwwwwwwwwwwwwwwwwwwwww";

vagy:

"ü"

akkor egyenlő a hibával:


javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes

at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1016) at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1016)

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:984)

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)

at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:436)

at javax.crypto.Cipher.doFinal(Cipher.java:2121)



Csak és kizárólag a példaszöveggel működik, ami ez:

"test text 123\0\0\0";


2015. ápr. 14. 18:20
 1/10 A kérdező kommentje:
Sokkal több w-t írtam, csak az oldal lerövidítette.
2015. ápr. 14. 18:20
 2/10 A kérdező kommentje:

Lefelejtettem:


public static byte[] encrypt(String plainText, String encryptionKey) throws Exception {

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");

SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");

cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-8")));

return cipher.doFinal(plainText.getBytes("UTF-8"));

}


public static String decrypt(byte[] cipherText, String encryptionKey) throws Exception{

Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");

SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");

cipher.init(Cipher.DECRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-8")));

return new String(cipher.doFinal(cipherText),"UTF-8");

}

2015. ápr. 14. 18:31
 3/10 anonim ***** válasza:
Mert a byte mérete nem egyenlő az Integer méretével.
2015. ápr. 14. 19:10
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:

Kk. :)

De a köv. hiba erre megy:(még ugyanaz a gond)

return cipher.doFinal(plainText.getBytes("UTF-8"));

2015. ápr. 14. 19:19
 5/10 anonim ***** válasza:
Milyen hiba?
2015. ápr. 14. 19:23
Hasznos számodra ez a válasz?
 6/10 A kérdező kommentje:

Erre a returnra csak ennyit ír:

at szakdolgozat2.Titkosit.encrypt



Gondolom ugyanúgy az a 16-os izéség....

2015. ápr. 14. 19:39
 7/10 anonim ***** válasza:

Blokk titkosítót használsz, ami egyszerre 16 byteokkal dolgozik és nem paddingelted ki a maradékot, így nem tudja befejezni.


Nem tudom mit bűvészkedsz vele, de a java-ban meg lehet az AES-t könnyen oldani anélkül, hogy manuálisan kéne piszkálni, keress a neten tutorial.

(Mondjuk ha már ez egy szakdolgozat akkor hajrá, küzdj meg érte!)

2015. ápr. 14. 20:55
Hasznos számodra ez a válasz?
 8/10 A kérdező kommentje:
Ha szakdoga is, akkor se fogom a forráskódot felrakni netre, helyette kiírom a problémás részt, legegyszerűsítem. :)
2015. ápr. 14. 21:05
 9/10 anonim ***** válasza:
100%

De legalább a hibát értelmezhetnéd - oda van írva egyértelműen, hogy "Input length not multiple of 16 byte".


Ennél tisztább hibaüzenetet nehéz kapni... Nem bántásképpen, de te így írsz szakdolgozatot programozásból? Hát nem örülnék neki, ha a kollégám lennél.

2015. ápr. 16. 08:00
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
50%

Látszik, hogy ezek a mai Java "fejlesztők" nem programoztak például C++ban, ahol egy lemaradt pontosvesszőért 150 soros értelmezhetetlen hibaüzenetet kaphatsz...

Ki van nyalva a seggük a mai modern fordítókkal, de el sem olvassák a hibaüzeneteket...

2015. ápr. 16. 08:46
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!