Saat ini, modul registrasi, login, atau penerbitan informasi di banyak sistem telah menambahkan fungsi kode acak untuk menghindari penggunaan program registrasi otomatis atau program penerbitan otomatis.
Kode verifikasi sebenarnya memilih beberapa karakter secara acak dan menampilkannya di halaman dalam bentuk gambar. Jika Anda mendownload dan mengirimkan Tomato Garden Informasi yang dikirimkan dianggap tidak valid. Untuk mencegah program otomatis menganalisis dan menguraikan gambar, beberapa garis interferensi biasanya dihasilkan secara acak pada gambar atau karakter terdistorsi, sehingga membuat pengenalan otomatis menjadi lebih sulit.
Copy kode kodenya sebagai berikut:
paket com.servlet;
impor java.awt.Color;
impor java.awt.Font;
impor java.awt.Graphics2D;
impor java.awt.image.BufferedImage;
import java.util.Acak;
impor javax.imageio.ImageIO;
impor javax.servlet.ServletException;
impor javax.servlet.ServletOutputStream;
impor javax.servlet.http.HttpServlet;
impor javax.servlet.http.HttpServletRequest;
impor javax.servlet.http.HttpServletResponse;
impor javax.servlet.http.HttpSession;
/**
* Hasilkan kode verifikasi acak
* @penulis bitiliu
*
*/
ValidateCodeServlet kelas publik memperluas HttpServlet
{
serialVersionUID panjang akhir statis pribadi = 1L;
//Lebar gambar kode verifikasi.
lebar int pribadi=60;
//Tinggi gambar kode verifikasi.
tinggi int pribadi=20;
//Jumlah karakter dalam kode verifikasi
kode int pribadiCount=4;
int pribadi x=0;
//tinggi font
pribadi int fontHeight;
kode int pribadiY;
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W ',
'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9 ' };
/**
* Inisialisasi dan verifikasi atribut gambar
*/
public void init() menampilkan ServletException
{
//Dapatkan informasi awal dari web.xml
//lebar
String strWidth=ini.getInitParameter("lebar");
//tinggi
String strHeight=ini.getInitParameter("tinggi");
//Jumlah karakter
String strCodeCount=ini.getInitParameter("codeCount");
//Mengonversi informasi yang dikonfigurasi menjadi nilai numerik
mencoba
{
jika (strLebar!=null && strLebar.panjang()!=0)
{
lebar=Bilangan Bulat.parseInt(strLebar);
}
jika (strHeight!=null && strHeight.length()!=0)
{
tinggi=Bilangan Bulat.parseInt(strHeight);
}
jika (strCodeCount!=null && strCodeCount.length()!=0)
{
codeCount=Bilangan Bulat.parseInt(strCodeCount);
}
}
menangkap(NumberFormatException e)
{}
x=lebar/(jumlah kode+1);
fontHeight=tinggi-2;
kodeY=tinggi-4;
}
layanan batal yang dilindungi (permintaan HttpServletRequest, resp HttpServletResponse)
melempar ServletException, java.io.IOException {
//Tentukan buffer gambar
BufferedImage buffImg = BufferedImage baru(
lebar, tinggi,BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
//Buat kelas penghasil angka acak
Acak acak = baru Acak();
//Isi gambar dengan warna putih
g.setColor(Warna.PUTIH);
g.fillRect(0, 0, lebar, tinggi);
//Membuat font.Ukuran font harus ditentukan sesuai dengan tinggi gambar.
Font font = Font baru("Fixedsys", Font.PLAIN, fontHeight);
//Setel font.
g.setFont(font);
//Gambarlah batasnya.
g.setColor(Warna.HITAM);
g.drawRect(0, 0, lebar - 1, tinggi - 1);
// Secara acak menghasilkan 160 garis interferensi untuk membuat kode otentikasi pada gambar sulit dideteksi oleh program lain.