Java小小的程序1之MD5计算器

简介:  用Java写计算字符串的MD5值的计算器。用了两个.java文件,共有四个类,其中一个计算并返回MD5值,一个是界面功能的类,一个是内部类,实现按钮的功能的,另一个是实现用浏览器打开指定网页的,采用了网上的一段代码。

 用Java写计算字符串的MD5值的计算器。用了两个.java文件,共有四个类,其中一个计算并返回MD5值,一个是界面功能的类,一个是内部类,实现按钮的功能的,另一个是实现用浏览器打开指定网页的,采用了网上的一段代码。把代码贴上,望指点。

这是计算功能的代码。

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { private MessageDigest md5; private String inString; MD5(String input) { inString = input; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { System.out.println(e.getMessage()); e.printStackTrace(); } } // calculate md5 value, and return as Hex value string String calculate() { byte[] md5Value = this.md5.digest(inString.getBytes()); StringBuffer valueHex = new StringBuffer(); int tmp; for (int i = 0; i < md5Value.length; i++) { tmp = md5Value[i] & 0xff; // 当tmp<16时,转换为16进制值将缺少一个0 if (tmp < 16) { valueHex.append(0); } valueHex.append(Integer.toHexString(tmp)); } return valueHex.toString(); } public static void main(String[] args) { } }
这是界面功能的代码。
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class MainPanel extends JFrame{ private String inString; private String compareString; private String outputString; static JTextField inputText = new JTextField(); static JTextField outputText = new JTextField(); static JTextField compareText = new JTextField(); static JButton compute = new JButton("计算"); static JButton compare = new JButton("比较"); static JButton empty = new JButton("清空"); static JButton freeback = new JButton("意见反馈"); // create main user interface MainPanel() { super("MD5计算器 V0.1.0"); setIconImage(new ImageIcon("./res/icon.gif").getImage()); setSize(320, 160); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jp = new JPanel(); jp.setLayout(new BorderLayout()); JPanel labels = new JPanel(); labels.setLayout(new GridLayout(3, 1)); labels.add(new JLabel(" 原信息 ")); labels.add(new JLabel(" MD5值 ")); labels.add(new JLabel(" 参考值 ")); JPanel texts = new JPanel(); GridLayout textLayout = new GridLayout(3, 1); textLayout.setVgap(5); texts.setLayout(textLayout); outputText.setEditable(false); texts.add(inputText); texts.add(outputText); texts.add(compareText); JPanel buttons = new JPanel(); FlowLayout buttonsLay = new FlowLayout(); buttonsLay.setHgap(10); buttons.setLayout(buttonsLay); NewAction newAction = new NewAction(); compute.addActionListener(newAction); compare.addActionListener(newAction); empty.addActionListener(newAction); freeback.addActionListener(newAction); buttons.add(compute); buttons.add(compare); buttons.add(empty); buttons.add(freeback); jp.add(labels, BorderLayout.WEST); jp.add(texts, BorderLayout.CENTER); jp.add(buttons, BorderLayout.SOUTH); setContentPane(jp); } public static void main(String[] args) { MainPanel panel = new MainPanel(); panel.setVisible(true); } class NewAction implements ActionListener { public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JButton button = (JButton) e.getSource(); if (button == compute) { MD5 md5 = new MD5(inputText.getText()); outputString = md5.calculate(); outputText.setText(outputString); } else if (button == compare) { if (outputText.getText().equals("")) { JOptionPane.showMessageDialog(null, "请先计算"); } else { if (outputText.getText().equals(compareText.getText())) { JOptionPane.showMessageDialog(null, "MD5值相同"); } else { JOptionPane.showMessageDialog(null, "MD5值不同"); } } } else if (button == empty) { inputText.setText(null); outputText.setText(null); compareText.setText(null); inString = null; outputString = null; compareString = null; } else { try { BareBonesBrowserLaunch.browse("http://blog.sina.com.cn/s/blog_03f9d3" "6e0100qihm.html"); } catch (IllegalArgumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IllegalAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InvocationTargetException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NoSuchMethodException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } } // 这段代码取自网上,现一时未能找到,望原作见谅。 class BareBonesBrowserLaunch { public static void openURL(String url) { try { browse(url); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error attempting to launch web browser:/n" + e.getLocalizedMessage()); } } static void browse(String url) throws ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InterruptedException, InvocationTargetException, IOException, NoSuchMethodException { String osName = System.getProperty("os.name", ""); if (osName.startsWith("Mac OS")) { Class fileMgr = Class.forName("com.apple.eio.FileManager"); Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class }); openURL.invoke(null, new Object[] { url }); } else if (osName.startsWith("Windows")) { Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " + url); } else { // assume Unix or Linux String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" }; String browser = null; for (int count = 0; count < browsers.length && browser == null; count++) if (Runtime.getRuntime() .exec(new String[] { "which", browsers[count] }) .waitFor() == 0) browser = browsers[count]; if (browser == null) throw new NoSuchMethodException("Could not find web browser"); else Runtime.getRuntime().exec(new String[] { browser, url }); } } }
目录
打赏
0
0
0
0
4
分享
相关文章
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
课时5:第一个Java程序
课时5介绍了编写第一个Java程序的步骤,包括创建Hello.java文件、编写“Hello World”代码、编译和运行程序。主要内容有:1) 新建并编辑Hello.java;2) 编译Java源文件生成.class文件;3) 通过命令行解释执行Java程序;4) 解释主方法的作用及信息输出操作。本课强调了类定义、文件命名规则和基本程序结构的重要性,并建议初学者使用记事本编写代码以熟悉基础语法。
消防救援支队消防员单兵装备智能养护舱电机驱动java版程序(二)
本文探讨消防救援中智能养护舱电机驱动的Java程序设计,作为系列文章第二部分。通过自动化和智能化手段,智能养护舱提升了装备维护效率与准确性。文章详细介绍了电机驱动模块的设计与实现,包括硬件选型、PID控制策略、安全保护机制及Java程序架构,确保电机精确控制、稳定性和安全性。未来将优化功能并引入智能算法和物联网技术,进一步提升装备维护智能化水平。
消防救援支队消防员单兵装备智能养护舱点击驱动java版程序(一)
智能消防作战服架通过电机驱动系统提升消防员作业效率和安全性。本文介绍基于Java的电机驱动程序开发,涵盖硬件准备、软件环境搭建及驱动程序实现。重点包括串口通信配置、电机控制类设计与控制逻辑实现,确保电机高效稳定运行。通过正确配置通信协议和串口参数,并添加异常处理机制,保障系统的安全性和可靠性。
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
79 2
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
178 2
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
856 2
java程序设置开机自启
java程序设置开机自启
235 1
|
5月前
|
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
206 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等