你所有的问题都源于此
byte[] encrypted = cipher.doFinal(toEncrypt.getBytes());return encrypted;
包含在try,catch块中的问题是,如果程序发现异常,则不返回任何内容。这样写(按照程序逻辑进行修改):
public static byte[] encrypt(String toEncrypt) throws Exception{ try{ String plaintext = toEncrypt; String key = "01234567890abcde"; String iv = "fedcba9876543210"; SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); cipher.init(Cipher.ENCRYPT_MODE,keyspec,ivspec); byte[] encrypted = cipher.doFinal(toEncrypt.getBytes()); return encrypted; } catch(Exception e){ return null; // Always must return something }}对于第二个,你必须从
crypto方法调用中捕获
Exception,如下所示(也可以在程序逻辑上对其进行修改):
public void actionPerformed(ActionEvent e) . . . try { byte[] encrypted = encrypt(concatURL); String encryptedString = bytesToHex(encrypted); content.removeAll(); content.add(new JLabel("Concatenated User Input -->" + concatURL)); content.add(encryptedTextField); setContentPane(content); } catch (Exception exc) { // TODO: handle exception }}你必须从中吸取教训:
具有返回类型的方法必须始终返回该类型的对象,我的意思是在所有可能的情况下
必须始终处理所有检查的异常



