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

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java atomiclong 使用_Java并发AtomicLongArray类

全屏java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作。 AtomicLongArray支持对基础long类型数组变量的原子操作。 它具有获取和设置方法,如在变量上的读取和写入。 也就是说&am…

memcached client for java api,Memcached Client Forjava API

java_memcached-release 关键类及方法整理说明如下。 SockIOPool 这个类用来创建管理客户端和服务器通讯连接池,客户端主要的工作包括数据通讯、服务器定位、hash 码生成等都是由这个类完成的。 1.public static SockIOPool getInstance() 获得连接池的单态方…

对于JAVA的总结800字,java试用期转正工作总结500字

【www.gz85.com - 试用期工作总结500字】java试用期转正工作总结一年的时间,每当自己在总结它的时候,感觉是那么的短暂—弹指一挥间.而也就是在这一挥间,承载着太多太多,有收获与成就,有失败与不足.回头看看2012年的足迹,伴随着自己一年的是学习与坚持.2016年伊始是通过分销资源…

rtrim php,php rtrim() 格式化中文问题

先看以下代码var_dump(rtrim("互联网产品、", "、"));我们以为会得到结果 "互联网产品", 但实际上获得的是 ""互联网产��"为什么呢, 其实这是编码引起的问题.rtrim()这个函数在处理字符时是按照ascii编码来…

java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式

UTF-8 采用变长度字节来表示字符,理论上最多可以到 6 个字节长度(一个字符六个字节)。UTF-8 编码兼容了 ASC II(0-127), 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符,才用以下编码规范&#xff1a…

我的世界java版刷雪球机,我的世界手机版怎么刷雪球 无限刷雪球机

随着全球变暖,厄尔尼诺现象加剧,一些生活在亚热带的孩子越来越感受不到下雪的喜悦,雪场的票子也是难求!不过不要着急,Minecraft给你模拟了一个生存的环境,在这里,你可以和好友联机打雪仗&#x…

php请求api获取返回值,我用curl请求接口获取返回值,但是不成功,大神给看看怎么调取?...

接口地址 http://mp.vservice.com.cn/service/OutWebService?wsdl接口调用方callService(String serviceName,String servId,String secretKey,String xmlInfo)参数名称 传值serviceName:OAuthservId :服务号idsecretKey :服务号秘钥xmlInfo…

对于单输入多输出系统matlab,求助!!如何把多输入多输出系统的传函转换为状态空间表达式?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个对应的是单输入单输出的。多输入多输出的如下:% Thansfer multiple transfer functions into sate space modelsclcclear all;% Step1:输入传递函数分子分母系数%From u1 to y1num1[-0.0006086 -7.715e-…

matlab的fftn,matlab fftn

(X,m,n) fftn 进行 n 维快速傅立叶变换(反变换用 ifftn) 语法:Yffn(X) \\ Yfftn(X,siz) fftshift 快速傅立叶变换的 DC 组件移到光谱中心 语法:......(X,m,n) fftn 进行 n 维快速傅立叶变换(反变换用 ifftn) 语法:Yffn(X) \\ Yfftn(X,siz) fftshift 快速傅立叶变换的 DC 组件移…

php catch e是什么,php try catch 中的catch(Exception $e) 中的Exception 有什么作用?

首先很明确的是 try ... catch ... 是一个语言结构。那既然如此就不能用函数参数类型限定的方式去理解 catch 后面的括号里的 Exception 了。如果这里没有 Exception,比如这样写:try {} catch ($e) {}你会得到一个错误:Parse error: parse er…

java udp 心跳,udp简略通讯示例-心跳示例

当前位置:我的异常网 软件架构设计 udp简略通讯示例-心跳示例udp简略通讯示例-心跳示例www.myexceptions.net 网友分享于:2013-09-04 浏览:44次udp简单通讯示例---心跳示例//发送心跳new UDPToPointCenter(18056).start();public class UDPToPointCen…

php如何随机显示图片,php中随机显示图片的函数代码_php

/*********************************************** Filename : img.php* Author : freemousehttp://www.gaodaima.com/?p49284php中随机显示图片的函数代码_php* web : www.cnphp.info* email :freemouse1981gmail.com* Date : 2010/12/27* Usage:* * **********************…

php数组里面写路径,使用路径在PHP数组中进行递归搜索

我会尝试清理一下,但这有效:$needle ["chapter one", foo, bar];$array [["name" > "Intro","id" > "123","children" > ["name" > "foo","id" > &qu…

matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc

摘要:针对在工程测试信号处理过程中广泛存在的信号之间的相关性问题,本文将研究和分析信号之间不同形式的相关关系以及信号在时域中的相关性。从而揭示了信号间关联程度的内在规律。通过举出实例来展示信号相关分析技术在实际工程中的具体应用。最后通过…

php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中

TL; DR:删除addslashes($data).这里多余.双重逃避..两次$datafread($p,filesize($fi));$dataaddslashes($data);$dat pg_escape_bytea($data);您读取数据,将其转义为字符串文字,然后将其转换为bytea八进制或十六进制转义.即使pg_escape_bytea是理智的,它也不会那样,…

页面显示其他php,php – 分页在所有其他页面上显示来自第1页的相同帖子

终于解决了这个:function my_filter_where( $where ) {global $wp_query;if (is_array($wp_query->query_vars[post_status])) {if (in_array(future,$wp_query->query_vars[post_status])) {// posts today into the future$where . " AND post_date …

oracle格式化列宽度,ORACLE日期时间的格式化参数大全

经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考Oracle SQL Reference官方文档,并附上详细的应用示例综合成文,希望能够对大家学习和使用有所帮助。本篇可视为"oracle著名及非著名函数介绍"的补充…

oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)

最近看了些有关Oracle的安全资料,看后随手做了一个渗透测试,把过程记录下来方便日后查阅.先用SuperScan4.0扫描下要测试的主机,速度很快,结果如图1所示:图 1端口 1521 是 Oracle 的 TNS Listener 默认监听的端口,通过扫描报告还可以看到Oracle的版本为8i.现在还不知道对方的操作…

linux系统安装serv u,建立第一个可用的FTP服务器

二、建立第一个可用的FTP服务器1、比如本机IP地址为“192.168.0.48”,已建立好域名“ftp.bbc.com”的相关DNS记录。2、打开Serv-U管理器。选上图的“Serv-U Administrator”,即出现“Setup Wizard”(设置向导)。此向导可以帮你轻松地完成基本设置&#x…

mat 内存分析 Linux,JVM内存分析工具MAT使用简介

# Memory Analyzer使用简介markdown格式渲染异常请阅读附件。- [Memory Analyzer使用简介](#memory-analyzer使用简介)- [MAT 简介](#mat-简介)- [安装](#安装)- [图形界面使用方式](#图形界面使用方式)- [命令行使用方式](#命令行使用方式)- [线程dump](#线程dump)- [堆dump](…