Android中MD5加密方式工具类

本文介绍了MD5加密算法的特点及其在字符串和文件上的应用方法。MD5是一种不可逆的单向加密算法,无论输入数据的长度如何,其输出始终为32位的固定长度。文章还提供了Java实现MD5加密的具体代码示例。
  MD5加密是一种单向加密算法,是不可逆的一种的加密方式 
 
  MD5的特点:
  压缩性:任意长度的数据,包括文件加密得出来的长度都是32位的固定长度。
  抗修改性:对数据的加密是无规律的,所得到的MD5值都有很大区别。
  强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。
 /**
 * Created by ztz on 2018/1/30.
 */

public class MD5Utils {
    /**
     * MD5的字符串加密方式
     * @param string
     * @return
     */
    public static String md5(String string) {
        if (TextUtils.isEmpty(string)) {
            return "";
        }
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
            byte[] bytes = md5.digest(string.getBytes());
            String result = "";
            for (byte b : bytes) {
                String temp = Integer.toHexString(b & 0xff);
                if (temp.length() == 1) {
                    temp = "0" + temp;
                }
                result += temp;
            }
            return result;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * MD5的文件加密
     * @param file
     * @return
     */
    public static String md5(File file) {
        if (file == null || !file.isFile() || !file.exists()) {
            return "";
        }
        FileInputStream in = null;
        String result = "";
        byte buffer[] = new byte[8192];
        int len;
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            in = new FileInputStream(file);
            while ((len = in.read(buffer)) != -1) {
                md5.update(buffer, 0, len);
            }
            byte[] bytes = md5.digest();

            for (byte b : bytes) {
                String temp = Integer.toHexString(b & 0xff);
                if (temp.length() == 1) {
                    temp = "0" + temp;
                }
                result += temp;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(null!=in){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }

    /**
     * MD5进行多次字符串加密
     * @param string
     * @param times
     * @return
     */
    public static String md5(String string, int times) {
        if (TextUtils.isEmpty(string)) {
            return "";
        }
        String md5 = md5(string);
        for (int i = 0; i < times - 1; i++) {
            md5 = md5(md5);
        }
        return md5(md5);
    }
    
}
学生信息管理系统是一个基于Java Web技术的现代化信息管理平台,主要用于高校、中小学等教育机构的学生信息管理工作。该系统采用MVC(Model-View-Controller)架构模式和分层架构设计,结合DAO(Data Access Object)设计模式,实现了学生信息的全面数字化管理。系统核心功能包括学生信息管理、课程管理、成绩管理和用户权限管理。学生信息管理模块支持学生基本信息的增删改查操作,如姓名、学号、性别、出生日期、联系方式等;课程管理模块允许管理员设置课程信息,包括课程名称、学分、授课教师等;成绩管理模块提供成绩录入、查询、统计和分析功能,支持按学生、课程或班级进行成绩汇总;用户权限管理模块确保系统安全,区分管理员、教师和学生等不同角色的操作权限。技术栈方面,系统后端采用Java编程语言,使用Servlet作为控制器处理业务逻辑,JSP(JavaServer Pages)实现动态页面渲染,前端结合HTML5和CSS3构建响应式用户界面,确保系统在不同设备上的良好显示效果。数据库采用MySQL进行数据存储,通过JDBC连接实现高效的数据访问。系统遵循软件工程的最佳实践,代码结构清晰,注释完整,便于二次开发和维护。应用场景广泛,适用于各教育机构的学生信息管理需求,如高校的学籍管理、中小学的学生档案管理、培训机构的学员信息跟踪等。系统设计注重实用性和易用性,界面简洁直观,操作流程优化,减少了人工管理的繁琐性,提高了工作效率。作为毕业设计资源,本系统提供了完整的源码和详细的设计文档,包括需求分析、系统设计、数据库设计、实现细节和测试报告等,适合计算机科学、软件工程等相关专业的学生参考和学习。源码经过优化,可直接部署运行,帮助用户快速理解Java Web开发的核心技术和MVC架构的实际应用。资源价值突出,不仅是一个功能完备的学生信息管理系统,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值