MD5值对比辨别文件是否改动

简介: 去年自己写了一个对比MD5值以此来辨别文件是否被改动,UI和代码有点拉,初学者
importjavax.swing.*;
importjava.awt.*;
importjava.io.*;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.util.Objects;
publicclassGetFilesMd5Value {
publicstaticvoidmain(String[] args) {
JFramejFrame=newJFrame("文件MD5生成及校验");
JLabeljLabel1=newJLabel("1点击按钮选择文件", JLabel.CENTER);
JLabeljLabel2=newJLabel("对比结果显示在这里", JLabel.CENTER);
JTextFieldjtextfield=newJTextField(32);
JButtonjButton1=newJButton("获取MD5");
JButtonjButton2=newJButton("对比MD5");
JFileChooserjFileChooser1=newJFileChooser();
JFileChooserjFileChooser2=newJFileChooser();
Containercontainer=jFrame.getContentPane();
container.setLayout(null);
container.add(jLabel1);
container.add(jLabel2);
container.add(jtextfield);
container.add(jButton1);
container.add(jButton2);
container.add(jFileChooser1);
container.add(jFileChooser2);
jFrame.setSize(515, 250);
jFrame.setResizable(false);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setVisible(true);
intwindowWidth=jFrame.getWidth(); //获得窗口宽intwindowHeight=jFrame.getHeight(); //获得窗口高Toolkitkit=Toolkit.getDefaultToolkit(); //定义工具包DimensionscreenSize=kit.getScreenSize(); //获取屏幕的尺寸intscreenWidth=screenSize.width; //获取屏幕的宽intscreenHeight=screenSize.height; //获取屏幕的高jFrame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示jtextfield.setHorizontalAlignment(JTextField.CENTER);
jtextfield.setBorder(null);
jtextfield.setBackground(null);
jButton1.setBounds(85, 10, 85, 20);
jButton2.setBounds(335, 10, 85, 20);
jLabel1.setBounds(5, 60, 240, 60);
jtextfield.setBounds(255, 60, 240, 60);
jLabel2.setBounds(130, 135, 240, 60);
jButton1.addActionListener(e-> {
try {
if (Objects.equals(jtextfield.getText(), "")) {
jLabel2.setText("请先获取文件MD5值再点击!");
                }
intret=jFileChooser1.showOpenDialog(jButton1.getParent());
if (ret==JFileChooser.APPROVE_OPTION) {
Filefile=jFileChooser1.getSelectedFile();
jLabel1.setText((generateMD5(file.getAbsolutePath())));
                }
            } catch (HeadlessExceptionheadlessException) {
headlessException.printStackTrace();
            }
        });
jButton2.addActionListener(e-> {
Strings="";
booleana=jtextfield.getText().equals(s);
System.out.println(a);
if (a) {
jLabel2.setText("请先获取文件MD5值再点击!");
            } else {
booleanb=jLabel1.getText().equals(jtextfield.getText());
if (b) {
jLabel2.setText("两个文件为同一文件或该文件并未修改过!");
                } else {
jLabel2.setText("两个文件非同一文件或该文件已被修改!");
                }
            }
        });
    }
/*** 辅助方法*/privatestaticbyte[] createChecksum(Stringfilename) {
InputStreamfis=null;
try {
fis=newFileInputStream(filename);
byte[] buffer=newbyte[1024];
MessageDigestcomplete=MessageDigest.getInstance("MD5");
intnumRead;
while ((numRead=fis.read(buffer)) !=-1) {
complete.update(buffer, 0, numRead);
            }
returncomplete.digest();
        } catch (NoSuchAlgorithmException|IOExceptione) {
e.printStackTrace();
        } finally {
try {
if (null!=fis) {
fis.close();
                }
            } catch (IOExceptione) {
e.printStackTrace();
            }
        }
returnnull;
    }
/*** 生成文件的MD5码** [url=home.php?mod=space&uid=952169]@Param[/url] filePath 文件路径* [url=home.php?mod=space&uid=155549]@Return[/url] 该文件的MD5码*/privatestaticStringgenerateMD5(StringfilePath) {
if (!newFile(filePath).isFile()) {
System.err.println("错误:"+filePath+" 不是有效文件。");
returnnull;
        }
byte[] b=createChecksum(filePath);
if (null==b) {
System.err.println(("错误:创建md5字符串失败!"));
returnnull;
        }
StringBuilderresult=newStringBuilder();
for (bytevalue : b) {
result.append(Integer.toString((value&0xff) +0x100, 16)
                    .substring(1));
        }
returnresult.toString();
    }
}
目录
相关文章
|
JavaScript 数据安全/隐私保护 Python
JS逆向 -- 某视频vurl值的加密分析
JS逆向 -- 某视频vurl值的加密分析
237 0
|
7月前
|
弹性计算 运维 Shell
|
7月前
|
弹性计算 运维 安全
|
存储 算法 安全
使用MD5当做文件的唯一标识,这样安全么?
MD5常用于文件完整性验证。通过对文件进行MD5哈希计算,可以生成唯一的哈希值,用于识别文件的内容是否发生改变。这在文件传输和数据备份中特别有用。 MD5也经常被用于密码存储,将用户密码经过MD5哈希后存储,而不是直接保存明文密码,以增加安全性。
1706 0
使用MD5当做文件的唯一标识,这样安全么?
|
缓存 JavaScript 安全
JS逆向 -- 分析某站b_lsid值加密过程
JS逆向 -- 分析某站b_lsid值加密过程
96 0
|
JavaScript 数据安全/隐私保护
JS逆向 -- 某新闻数据包中sign值加密分析
JS逆向 -- 某新闻数据包中sign值加密分析
99 0
|
JavaScript 安全 数据安全/隐私保护
JS逆向 -- 分析某站buvid3和_uuid的加密过程
JS逆向 -- 分析某站buvid3和_uuid的加密过程
196 0
替换文件中的敏感信息
假设我们有一份文件,文件中包含了很多个人信息。现在需要一份去除其中敏感信息的版本,将文件中所有手机号的4~7位和身份证号的6~15位用 * 替换。
|
算法
Qt实现一个重复文件检测小工具(原理:通过md5校验)
Qt实现一个重复文件检测小工具(原理:通过md5校验)
327 0
ADI
|
算法
[记录]我的算法学习路径
[记录]我的算法学习路径
ADI
110 0

热门文章

最新文章