网站首页 > 文章中心 > 其它

java限制密码长度代码

作者:小编 更新时间:2023-09-27 10:55:33 浏览量:453人看过

用java写个文件加密的代码该怎么写

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

java限制密码长度代码-图1

import java.io.*;

import java.security.*;

import javax.crypto.*;

import javax.crypto.spec.*;

/**

文件名:FileEncrypter.java

说明:文件加密

java限制密码长度代码-图2

加密方法:三重DES加密

加密过程:对选中的文件加密后在同文件夹下生成一个增加了".tdes"

扩展名的加密文件

解密过程:对选中的加密文件(必须有".tdes"扩展名)进行解密

*/

public class FileEncrypter extends JFrame{

public static void main(String args[]) {

FileEncrypter fe = new FileEncrypter();

fe.show();

}

FileEncrypter(){

this.setSize(WIDTH,HEIGHT);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setResizable(false);

Toolkit tk = Toolkit.getDefaultToolkit();

Dimension screenSize = tk.getScreenSize();

this.setTitle("文件加密器(TriDES)");

Container c = this.getContentPane();

c.setLayout( new FlowLayout());

final FilePanel fp = new FilePanel("文件选择");

c.add(fp);

final KeyPanel pp = new KeyPanel("密码");

c.add(pp);

JButton jbE = new JButton("加密");

c.add(jbE);

jbE.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event){

File file = new File(fp.getFileName());

if (file.exists())

encrypt(file.getAbsoluteFile(),pp.getKey());

else

JOptionPane.showMessageDialog(

null,"请选择文件!","提示",JOptionPane.OK_OPTION);

});

JButton jbD = new JButton("解密");

c.add(jbD);

jbD.addActionListener(new ActionListener(){

decrypt(file.getAbsoluteFile(),pp.getKey());

加密函数

输入:

其中:

输出:

对输入的文件加密后,保存到同一文件夹下增加了".tdes"扩展名的文件中.

private void encrypt(File fileIn,String sKey){

try{

FileInputStream fis = new FileInputStream(fileIn);

byte[] bytIn = new byte[(int)fileIn.length()];

for(int i = 0;iFILEIN.LENGTH();I++){

bytIn[i] = (byte)fis.read();

//加密

byte[] bytOut = encryptByDES(encryptByDES(

String fileOut = fileIn.getPath() + ".tdes";

FileOutputStream fos = new FileOutputStream(fileOut);

for(int i = 0;iBYTOUT.LENGTH;I++){

fos.write((int)bytOut[i]);

fos.close();

this,"加密成功!","提示",JOptionPane.OK_OPTION);

}else

}catch(Exception e){

e.printStackTrace();

解密函数

对输入的文件解密后,保存到用户指定的文件中.

private void decrypt(File fileIn,String sKey){

String strPath = fileIn.getPath();

else{

this,"不是合法的加密文件!","提示",JOptionPane.OK_OPTION);

return;

JFileChooser chooser = new JFileChooser();

chooser.setCurrentDirectory(new File("."));

chooser.setSelectedFile(new File(strPath));

//用户指定要保存的文件

int ret = chooser.showSaveDialog(this);

if(ret==JFileChooser.APPROVE_OPTION){

//解密

byte[] bytOut = decryptByDES(decryptByDES(

File fileOut = chooser.getSelectedFile();

fileOut.createNewFile();

this,"解密成功!","提示",JOptionPane.OK_OPTION);

this,"解密失败,请核对密码!","提示",JOptionPane.OK_OPTION);

用DES方法加密输入的字节

private byte[] encryptByDES(byte[] bytP,byte[] bytKey) throws Exception{

DESKeySpec desKS = new DESKeySpec(bytKey);

SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");

SecretKey sk = skf.generateSecret(desKS);

Cipher cip = Cipher.getInstance("DES");

cip.init(Cipher.ENCRYPT_MODE,sk);

return cip.doFinal(bytP);

用DES方法解密输入的字节

private byte[] decryptByDES(byte[] bytE,byte[] bytKey) throws Exception{

cip.init(Cipher.DECRYPT_MODE,sk);

return cip.doFinal(bytE);

输入密码的字符形式,返回字节数组形式.

private byte[] getKeyByStr(String str){

for(int i=0;iSTR.LENGTH()

java限制密码长度代码-图3

Integer itg =

bRet[i] = itg.byteValue();

return bRet;

输入:0-F

private int getChrInt(char chr){

int iRet=0;

if(chr=="0".charAt(0)) iRet = 0;

if(chr=="1".charAt(0)) iRet = 1;

if(chr=="A".charAt(0)) iRet = 10;

if(chr=="B".charAt(0)) iRet = 11;

return iRet;

文件选择组件.

class FilePanel extends JPanel{

FilePanel(String str){

JLabel label = new JLabel(str);

JButton chooseButton = new JButton("浏览...");

this.add(label);

this.add(fileText);

this.add(chooseButton);

clickAction ca = new clickAction(this);

chooseButton.addActionListener(ca);

public String getFileName(){

JTextField jtf = (JTextField)this.getComponent(1);

return jtf.getText();

private class clickAction implements ActionListener{

clickAction(Component c){

cmpt = c;

int ret = chooser.showOpenDialog(cmpt);

JPanel jp = (JPanel)cmpt;

JTextField jtf = (JTextField)jp.getComponent(1);

jtf.setText(chooser.getSelectedFile().getPath());

private Component cmpt;

密码生成组件.

class KeyPanel extends JPanel{

KeyPanel(String str){

JButton chooseButton = new JButton("随机产生");

public String getKey(){

KeyGenerator kg = KeyGenerator.getInstance("DES");

Key ke = kg.generateKey();

byte[] bytK1 = ke.getEncoded();

ke = kg.generateKey();

private String getByteStr(byte[] byt){

String strRet = "";

for(int i=0;iBYT.LENGTH;I++){

//System.out.println(byt[i]);

return strRet;

private String getHexValue(int s){

String sRet=null;

switch (s){

case 0: sRet = "0";break;

case 1: sRet = "1";break;

case 10: sRet = "A";break;

case 11: sRet = "B";break;

return sRet;

JAVA代码中怎么限制输入的字符长度

使用DocumentFilter

import java.awt.EventQueue;

import java.awt.GridBagLayout;

import java.awt.Toolkit;

import javax.print.attribute.AttributeSet;

import javax.swing.JFrame;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.text.AbstractDocument;

import javax.swing.text.BadLocationException;

import javax.swing.text.DocumentFilter;

import javax.swing.text.DocumentFilter.FilterBypass;

public class FilterTest {

public static void main(String[] args) {

new FilterTest();

public FilterTest() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

JTextField field = new JTextField(10);

JFrame frame = new JFrame("Testing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new GridBagLayout());

frame.add(field);

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

public class SizeFilter extends DocumentFilter {

private int maxCharacters;

public SizeFilter(int maxChars) {

maxCharacters = maxChars;

public void insertString(FilterBypass fb, int offs, String str, AttributeSet a)

throws BadLocationException {

if ((fb.getDocument().getLength() + str.length()) = maxCharacters) {

super.insertString(fb, offs, str, a);

} else {

Toolkit.getDefaultToolkit().beep();

public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)

if ((fb.getDocument().getLength() + str.length()

- length) = maxCharacters) {

super.replace(fb, offs, length, str, a);

java编程如何实现限制账号密码长度和包含数字、字母?

正则表达式,是最好的方式.

下面这个正是判断必须同时包含数字和字母的.长度单独检测.

public static void main(String[] argv) {

String name1 = "aaaaaaaaaaa";

System.out.println(name1.matches(reg));

以上就是土嘎嘎小编为大家整理的java限制密码长度代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章