Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan kod pengesahan imej dalam pembangunan API Java

Bagaimana untuk melaksanakan kod pengesahan imej dalam pembangunan API Java

WBOY
WBOYasal
2023-06-18 09:22:451886semak imbas

Dengan perkembangan pesat teknologi Internet, untuk memastikan keselamatan sistem, kod pengesahan telah menjadi bahagian penting dalam setiap sistem. Antaranya, kod pengesahan gambar digemari oleh pembangun kerana kemudahan penggunaan dan keselamatannya. Artikel ini akan memperkenalkan kaedah khusus untuk melaksanakan kod pengesahan imej dalam pembangunan API Java.

1. Apakah itu kod pengesahan gambar

Kod pengesahan gambar ialah cara pengesahan mesin manusia melalui gambar. Ia biasanya terdiri daripada gabungan gambar rawak yang mengandungi nombor, huruf, simbol, dsb., yang meningkatkan keselamatan sistem. Prinsip kerjanya termasuk: pengguna memasukkan kod pengesahan pada halaman log masuk, dan latar belakang mengesahkan kod pengesahan yang dimasukkan. Hanya pengguna yang telah lulus pengesahan boleh meneruskan ke langkah seterusnya.

2. Gunakan kelas alat penjanaan imej dalam pembangunan Java

Java menyediakan kelas BufferedImage untuk menjana imej semasa pembangunan. Dalam pembangunan sebenar, kami biasanya menggunakan kelas utiliti rentetan, seperti RandomStringUtils, untuk menjana rentetan rawak, dan kemudian melukis rentetan melalui kelas BufferedImage dan kelas Grafik.

Langkah pelaksanaan khusus adalah seperti berikut:

1 Hasilkan rentetan rawak

String randomStr = RandomStringUtils.randomAlphanumeric(4);

Antaranya. , Kaedah randomAlphanumeric() menjana rentetan huruf besar dan huruf kecil rawak dan nombor.

2. Lukis gambar

Imej Buffered = Imej Buffered baharu(LEBAR, TINGGI, Imej Buffered.TYPE_INT_RGB);
Grafik g = image.getGraphics();

/ / Lukis latar belakang
g.setColor(Warna baharu(240, 240, 240));
g.fillRect(0, 0, WIDTH, HEIGHT);

// Lukis aksara
g.setColor(Warna baharu(50, 50, 50));
g.setFont(Fon baharu("Georgia", Font.BOLD, 20));//Tetapkan fon
g.drawString(randomStr, 10, 20);

3 Tetapkan kaedah pengesahan imej

HttpSession session = request.getSession();

// Simpan rentetan rawak dalam sesi, dan Tetapkan masa sah
session.setAttribute("img_random", randomStr);
session.setMaxInactiveInterval(60 * 2);//Tetapkan masa tamat sesi kepada 2 minit

//Tetapkan kod pengesahan tambah Garam
String sessionId = session.getId();
String codeWithSessionId = randomStr + sessionId;
String salt = DigestUtils.md5Hex(codeWithSessionId);

// Akan mengesahkan selepas menambah garam Kod disimpan dalam sesi
session.setAttribute("img_salt", salt);

Meningkatkan keselamatan kod pengesahan dengan mengelirukan rentetan rawak dan sessionID.

4. Imej keluaran

response.setContentType("image/jpeg");//Nyatakan jenis kandungan imej yang dikembalikan
Output ServletOutputStream = response.getOutputStream();
ImageIO .write(imej, "JPEG", outputStream);
outputStream.close();

Akhir sekali, keluarkan imej kepada klien melalui ServletOutputStream.

3. Pengesahan kod pengesahan imej dalam pembangunan Java

Selepas pengguna memasukkan kod pengesahan, kod latar belakang perlu mengesahkan kod pengesahan yang dimasukkan oleh pengguna. Langkah pelaksanaan khusus adalah seperti berikut:

1 Dapatkan kod pengesahan input pengguna

Kod input rentetan = request.getParameter("code");

2 kod pengesahan disimpan dalam sesi Kod pengesahan dan kod pengesahan masin

String randomCode = (String) session.getAttribute("img_random");
String saltCode = (String) session.getAttribute("img_salt") ;

3. Sahkan kod pengesahan yang dimasukkan oleh pengguna selepas menambah garam

String sessionId = session.getId();
String codeWithSessionId = inputCode + sessionId;
String salt = DigestUtils.md5Hex(codeWithSessionId);
if (salt.equalsIgnoreCase(saltCode)) {
    // 验证码正确
} else {
    // 验证码不正确
}

Dengan mendapatkan kod pengesahan yang dimasukkan oleh pengguna dan kod pengesahan yang disimpan dalam sesi, gunakan kaedah pengasinan yang sama untuk mengesahkan, untuk memastikan ketepatan kod pengesahan.

Kesimpulan:

Melalui langkah-langkah yang diperkenalkan dalam artikel ini, kami boleh melaksanakan fungsi kod pengesahan imej dengan mudah dalam pembangunan Java. Menggunakan kod pengesahan boleh meningkatkan keselamatan sistem dengan berkesan dan mencegah serangan berniat jahat Jika tiada kod pengesahan dalam sistem anda, anda juga boleh mencuba kaedah di atas.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kod pengesahan imej dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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