java产生字符函数_java生成字符串md5函数类(javaSE)
//实现生成MD5值
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Digest {
public Digest() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static StringBuilder check(String path) {
// TODO Auto-generated method stub
StringBuilder sb = new StringBuilder();
byte[] size = null;
StringBuilder noAlgorithm=new StringBuilder("无法使用MD5算法,这可能是你的JAVA虚拟机版本太低");
StringBuilder fileNotFound=new StringBuilder("未能找到文件,请重新定位文件路径");
StringBuilder IOerror=new StringBuilder("文件输入流错误");
try {
MessageDigest md5=MessageDigest.getInstance("MD5");//生成MD5类的实例
File file = new File(path); //创建文件实例,设置路径为方法参数
FileInputStream fs = new FileInputStream(file);
BufferedInputStream bi = new BufferedInputStream(fs);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte[] b = new byte[bi.available()]; //定义字节数组b大小为文件的不受阻塞的可访问字节数
int i;
//将文件以字节方式读到数组b中
while ((i = bi.read(b, 0, b.length)) != -1)
{
}
md5.update(b);//执行MD5算法
for (byte by : md5.digest())
{
sb.append(String.format("%02X", by));//将生成的字节MD5值转换成字符串
}
bo.close();
bi.close();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
return noAlgorithm;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
return fileNotFound;
} catch (IOException e) {
// TODO Auto-generated catch block
return IOerror;
}
return sb;//返回MD5值
}
}
//生成窗体类为主类
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class MainFrame extends JFrame implements ActionListener,MouseListener{
JTextField fileSource=new JTextField(36);
JTextField produceMD5=new JTextField(36);
JTextField showEqual=new JTextField("请在此处输入源MD5值",36);
JButton choiceFile=new JButton("选择文件");
JButton createMD5=new JButton("生成MD5");
JButton judgement=new JButton("对比");
JPanel panel;
JFileChooser fileChooser=new JFileChooser();
public MainFrame() {
// TODO Auto-generated constructor stub
super("MD5工具");
//设置主窗体的观感为金属外观
try {
UIManager.setLookAndFeel(new MetalLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//窗体布局使用GridBagLayout
GridBagLayout gbl=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
panel=new JPanel(gbl);
panel.setBorder(BorderFactory.createTitledBorder("xiaohb's MD5 check tool"));
gbc.fill=GridBagConstraints.BOTH;
gbc.weightx=1.0;
gbc.weighty=1.0;
gbl.setConstraints(fileSource, gbc);
panel.add(fileSource);
gbc.weightx=0.0;
gbc.gridwidth=GridBagConstraints.REMAINDER;
gbl.setConstraints(choiceFile, gbc);
panel.add(choiceFile);
gbc.gridwidth=1;
gbl.setConstraints(produceMD5, gbc);
panel.add(produceMD5);
gbc.weightx=0.0;
gbc.gridwidth=GridBagConstraints.REMAINDER;
gbl.setConstraints(createMD5, gbc);
panel.add(createMD5);
gbc.gridwidth=1;
gbl.setConstraints(showEqual, gbc);
panel.add(showEqual);
gbc.weightx=0.0;
gbc.gridwidth=GridBagConstraints.REMAINDER;
gbl.setConstraints(judgement, gbc);
panel.add(judgement);
add(panel);
//给按钮添加注册器
showEqual.addMouseListener(this);
choiceFile.addActionListener(this);
createMD5.addActionListener(this);
judgement.addActionListener(this);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MainFrame frame=new MainFrame();
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(350, 200);
frame.setResizable(false);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Digest digest=new Digest();
JOptionPane prompt=new JOptionPane();
if(e.getSource()==choiceFile){
fileChooser.showOpenDialog(this);
fileSource.setText(fileChooser.getSelectedFile().toString());//显示选择的文件名
}else if(e.getSource()==createMD5){
produceMD5.setText((digest.check(fileSource.getText())).toString());//生成的MD5值显示在文本区域内
}else if(e.getSource()==judgement){
//判断MD5值是否相同
if(produceMD5.getText().equalsIgnoreCase(showEqual.getText())){
prompt.showMessageDialog(this, "两个MD5值相同,文件安全!");
}else{
prompt.showMessageDialog(this, "两个MD5值不同,文件可能被篡改,请检查!");
}
}
}
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==showEqual){
showEqual.setText("");
}
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
java产生字符函数_java生成字符串md5函数类(javaSE)相关推荐
- java 中文怎么截取_Java截取字符串的函数且保证中文截取正常
SUBSTRING 返回字符.binary.text 或 image 表达式的一部分.有关可与该函数一起使用的有效 Microsoft® SQL ...
- java查找字符位置_java 查找字符串所在的位置代码
使用了 string 类的 indexof() 方法在字符串中查找子字符串出现的位置,如过存在返回字符串出现的位置(第一位为0),如果不存在返回 -1.方便判断和截取字符串! 语法:stringobj ...
- java 相同字符不连续_Java中字符串中连续相同字符去重方法
搜索热词 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到的 ...
- [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]
[问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...
- vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用
vue字符串替换,vue将字符串内指定字符替换,vue字符串替换函数.replace如何使用 需求:将原字符串内的2022替换成2023 源码 //原字符串 const ystring=2022-02 ...
- pb函数库之字符串操作函数
pb函数库之字符串操作函数 Fill()功能建立一个由指定字符串填充的指定长度的字符串. 语法Fill ( chars, n ) 参数chars:string类型,指定用于重复填充的字符串n: ...
- java 对比函数_java中字符串比较函数和操作函数,详细解析
java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...
- java 字符串 字符查找_java之字符串中查找字串的常见方法
1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. int indexOf(String str, int startIndex):从指定的索引处开 ...
- java的字符定义_Java字符串定义及常用方法
String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...
最新文章
- pytorch和jittor 程序对比
- IntelliJ-将Java项目/模块转换为Maven项目/模块
- 新手学python用什么软件-初学 Python 需要安装哪些软件?
- 吃透了这些Redis知识点,面试官一定觉得你很NB
- springboot学习笔记(八)
- android 网络通信框架volly
- 不同图像锐化算子提取的图像信息有哪些不同_传统图像处理
- [转载] opencv学习笔记7:图像加法与图像融合
- 25 矩阵——QR分解、Householder 矩阵、镜面反射
- layout 工程师如何提升自己? 2020-3-27
- 记录CSDN账号被盗事件
- python qq群发消息_使用python发送QQ消息,QQ消息自动发送
- 再次携号转网_全国携号转网真来了!这些坑一定要小心!
- tensorflow2.4使用GooleNet实现识别植物花朵图像项目
- 快速选取单元格的10种方法。
- ie11兼容性视图设置_OA办公系统在最新IE11下不能使用解决方法
- 学习OpCode前言
- Codeforces Round #777 (Div. 2) ABCD题解
- 第十四届蓝桥杯广东省省赛游记+个人题解
- 云运维给企业带来的价值
热门文章
- (亲测)vue-cli项目添加骨架屏多种方式,自动生成骨架屏
- java自定义注解annotation记录操作日志
- java使用Socket类接收和发送数据
- asp.net接受表单验证格式后再提交数据_看滴普科技大前端如何玩转el-form-renderer 表单渲染器1.14.0
- oracle ado6,c# ado 连接数据库 六步曲
- Linux 中使用 sort 指令分组排序详解
- 哈工大计算机学院成立,哈工大计算机科学与技术学院简介
- 英雄联盟与人生奋斗的类比讨论
- pl sql 连接mysql_PL/SQL 连接mysql步骤
- sqlserver oracle对比,sqlserver和oracle常用函数对比