Rumah > Java > javaTutorial > Bagaimana Mengendalikan Pengecualian dalam Kaedah Penyulitan AES Java?

Bagaimana Mengendalikan Pengecualian dalam Kaedah Penyulitan AES Java?

Susan Sarandon
Lepaskan: 2024-12-17 06:25:25
asal
515 orang telah melayarinya

How to Handle Exceptions in Java's AES Encryption Method?

Pengendalian Pengecualian dalam Kod Java

Pertimbangkan coretan kod Java berikut:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.*;
import java.io.*;


public class EncryptURL extends JApplet implements ActionListener {

    // ...

    public void 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
        }
    }


    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand() == "Submit") {

            // ...

            String concatURL =
                "user=" + subUserName + "&f=" + subFName +
                "&l=" + subLName + "&em=" + subEmail +
                "&p=" + subPhone + "&h=" + subHeartbeatID +
                "&re=" + subRegionCode + "&ret=" + subRetRegionCode;

            // ...

            try {
                byte[] encrypted = encrypt(concatURL);
                String encryptedString = bytesToHex(encrypted);
                // ...
            } catch (Exception exc) {
                // TODO: handle exception
            }
        }
    }

    // ...

}
Salin selepas log masuk

Soalan dan jawapan berikut menangani masalah yang dihadapi semasa menyusun kod ini coretan.

Soalan 1: Mengapa coretan kod membuang pengecualian "Pengecualian; mesti ditangkap atau diisytiharkan dibuang" semasa cuba menyusunnya?

Jawapan:

Pengecualian ini berlaku kerana kaedah penyulitan diisytiharkan untuk membuang Pengecualian tetapi tidak mengendalikannya dalam blok cuba-tangkapnya. Untuk menyelesaikan masalah ini, blok tangkapan telah ditambahkan pada kaedah penyulitan untuk mengendalikan Pengecualian.

Soalan 2: Mengapa coretan kod membuang pengecualian "penyata pemulangan hilang" untuk baris 109?

Jawapan:

Kaedah penyulitan telah diisytiharkan kembalikan jenis bait[], yang bermaksud ia mesti mengembalikan nilai jenis itu dalam semua kes. Kod asal tidak mempunyai pernyataan pulangan dalam blok tangkapan, mengakibatkan pengecualian. Kenyataan pemulangan telah ditambahkan pada blok tangkapan untuk mengembalikan null sekiranya berlaku pengecualian.

Pelajaran yang Diperoleh:

  1. Kaedah dengan jenis pemulangan mesti sentiasa mengembalikan objek jenis itu dalam semua senario yang mungkin.
  2. Semua pengecualian yang ditanda mesti sentiasa dikendalikan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian dalam Kaedah Penyulitan AES Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan