/*
* JFrameRandom.java
*
* Created on 17
Agustus 2008, 21:49
*/
/**
*
* @author Administrator
*/
import javax.swing.JOptionPane;
import java.util.*;
public class JFrameRandom extends javax.swing.JFrame {
private String[]
pesan;
public
JFrameRandom() {
super("Password security");
initComponents();
pesan=new
String[6];
pesan[0]="Isi Nama dan Password !";
pesan[1]="Password jangan terlalu pendek.\n";
pesan[2]="Password jangan mengandung nama.\n";
pesan[3]="Password jangan terlalu sederhana.\n";
pesan[4]="Gunakan password yang mudah diingat.\n";
pesan[5]="Jangan hanya menggunakan angka, kombinasikan.\n";
}
void
tampil_pesan(int message_num) {
if(message_num==1)
JOptionPane.showMessageDialog(this,pesan[0]);
else{
txttampil.append(pesan[message_num-1]);
}
}
void bersih() {
txttampil.setText("");
barproses.setValue(0);
}
int
cek_angka(String angka) {
boolean
huruf=false;
for (int
i=0;i<angka.length();i++) {
if
(!Character.isDigit(angka.charAt(i))) huruf=true;
}
if
(huruf==false) {
return(1);
}
return(0);
}
public int
hitung_karakter(String karakter) {
Character
Chr=new Character('a');
int panjang=0;
for (int
i=0;i<karakter.length();i++) {
if
(Chr.isDigit(karakter.charAt(i))) panjang++;
}
return (panjang);
}
public int
spesial_karakter(String spesial) {
int panjang=0;
int i=0;
for
(i=0;i<spesial.length();i++) {
switch
(spesial.charAt(i)) {
case
'!':
panjang++;
break;
case
'@':
panjang++;
break;
case
'#':
panjang++;
break;
case
'$':
panjang++;
break;
case
'%':
panjang++;
break;
case
'^':
panjang++;
break;
case
'&':
panjang++;
break;
case
'*':
panjang++;
break;
case
'(':
panjang++;
break;
case
')':
panjang++;
break;
case
'+':
panjang++;
break;
case
'=':
panjang++;
break;
case
'[':
panjang++;
break;
case
']':
panjang++;
break;
case
'{':
panjang++;
break;
case
'}':
panjang++;
break;
case
'-':
panjang++;
break;
case
'_':
panjang++;
break;
case
'"':
panjang++;
break;
case
'<':
panjang++;
break;
case
'>':
panjang++;
break;
case
'?':
panjang++;
break;
case
'.':
panjang++;
break;
case
',':
panjang++;
break;
case
'/':
panjang++;
break;
case
'\'':
panjang++;
break;
}
}
return(panjang);
}
public int
cek_nilai(String txt1, String txt2) {
if
(txt1.length()==0 | txt2.length()==0) return (1);
else return
(0);
}
public int
pesan1(String pasword) {
if
(pasword.length()<6) {
tampil_pesan(2);
return
(1);
}
else
return
(pasword.length()*4);
}
public int
pesan2(String nama, String pasword) {
if
(pasword.contains(nama)==true) {
tampil_pesan(3);
return
(-40);
}
else return
(10);
}
public int
pesan3(String pasword) {
int
spesial_karakter=spesial_karakter(pasword);
if
(spesial_karakter < (pasword.length()/4)){
tampil_pesan(4);
return
-30;
}else if
(spesial_karakter > (pasword.length()/2)) {
tampil_pesan(5);
return
-10;
}
return
(spesial_karakter*5);
}
public int
pesan4(String pasword) {
int
angka=hitung_karakter(pasword);
return
(angka*2);
}
public int
pesan5(String pass) {
int
nilai_angka=1;
if
(cek_angka(pass)==1) {
tampil_pesan(6);
nilai_angka=-20;
}
return
(nilai_angka*10);
}
private void
acak(){
Random
diacak=new Random();
String
kecil="qwertyuiopasdfghjklzxcvbnm";
String
besar="QWERTYUIOPASDFGHJKLZXCVBNM";
String
spesial_string="!@#$%^&**()+_-=<>.,/\\\"";
String
angka="1234567890";
StringBuffer
password=new StringBuffer();
for(int
i=0;i<10;i++){
int
charSet=diacak.nextInt(4);
switch(charSet){
case
0:
password.append(angka.charAt(diacak.nextInt(angka.length()-1)));
break;
case 1:
password.append(spesial_string.charAt(diacak.nextInt(spesial_string.length()-1)));
break;
case
2:
password.append(kecil.charAt(diacak.nextInt(kecil.length()-1)));
break;
case
3:
password.append(besar.charAt(diacak.nextInt(besar.length()-1)));
}
}
txtpassword.setText(password.toString());
}
/** This method is
called from within the constructor to
* initialize the
form.
* WARNING: Do NOT
modify this code. The content of this method is
* always
regenerated by the Form Editor.
*/
// <editor-fold
defaultstate="collapsed" desc="Generated
Code">//GEN-BEGIN:initComponents
private void
initComponents() {
jLabel1 = new
javax.swing.JLabel();
jLabel2 = new
javax.swing.JLabel();
txtnama = new
javax.swing.JTextField();
txtpassword =
new javax.swing.JTextField();
jScrollPane1 =
new javax.swing.JScrollPane();
txttampil =
new javax.swing.JTextArea();
tombolbuat =
new javax.swing.JButton();
tombolcek =
new javax.swing.JButton();
jLabel3 = new
javax.swing.JLabel();
barproses =
new javax.swing.JProgressBar();
labelproses =
new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("User Name :");
jLabel2.setText("Password :");
txttampil.setColumns(20);
txttampil.setRows(5);
jScrollPane1.setViewportView(txttampil);
tombolbuat.setText("Auto Password");
tombolbuat.addActionListener(new java.awt.event.ActionListener() {
public
void actionPerformed(java.awt.event.ActionEvent evt) {
tombolbuatActionPerformed(evt);
}
});
tombolcek.setText("Cek
Password");
tombolcek.addActionListener(new java.awt.event.ActionListener() {
public
void actionPerformed(java.awt.event.ActionEvent evt) {
tombolcekActionPerformed(evt);
}
});
jLabel3.setText("Security :");
labelproses.setText("0%");
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 390,
Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addGap(36, 36, 36)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(tombolcek)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tombolbuat))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,
false)
.addComponent(barproses, javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(txtpassword,
javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtnama, javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(labelproses)))
.addContainerGap(28, Short.MAX_VALUE))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(38, 38, 38)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(labelproses)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txtnama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtpassword, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3)
.addComponent(barproses, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 67,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(tombolbuat)
.addComponent(tombolcek))
.addContainerGap(75, Short.MAX_VALUE))
);
pack();
}//
</editor-fold>//GEN-END:initComponents
private void
tombolbuatActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_tombolbuatActionPerformed
// TODO add
your handling code here:
acak();
}//GEN-LAST:event_tombolbuatActionPerformed
private void
tombolcekActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_tombolcekActionPerformed
// TODO add
your handling code here:
bersih();
if
(cek_nilai(txtpassword.getText(),txtnama.getText())==1) {
tampil_pesan(1);
return;
}
int
status=pesan1(txtpassword.getText()) +
pesan2(txtnama.getText(),txtpassword.getText()) + pesan3(txtpassword.getText())+pesan4(txtpassword.getText())+pesan5(txtpassword.getText());
if
(status>100) status=100;
else if
(status<0) status=0;
barproses.setValue(status);
labelproses.setText(status+"%");
}//GEN-LAST:event_tombolcekActionPerformed
/**
* @param args the
command line arguments
*/
public static void
main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public
void run() {
new
JFrameRandom().setVisible(true);
}
});
}
// Variables
declaration - do not modify//GEN-BEGIN:variables
private
javax.swing.JProgressBar barproses;
private
javax.swing.JLabel jLabel1;
private
javax.swing.JLabel jLabel2;
private
javax.swing.JLabel jLabel3;
private
javax.swing.JScrollPane jScrollPane1;
private
javax.swing.JLabel labelproses;
private
javax.swing.JButton tombolbuat;
private
javax.swing.JButton tombolcek;
private
javax.swing.JTextField txtnama;
private
javax.swing.JTextField txtpassword;
private
javax.swing.JTextArea txttampil;
// End of
variables declaration//GEN-END:variables
}
Tidak ada komentar:
Posting Komentar