Java 实现Md5算法

package other;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
 * MD5 算法
*/
public class MD5 {
    
    // 全局数组
    private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

public MD5() {
    }

// 返回形式为数字跟字符串
    private static String byteToArrayString(byte bByte) {
        int iRet = bByte;
        // System.out.println("iRet="+iRet);
        if (iRet < 0) {
            iRet += 256;
        }
        int iD1 = iRet / 16;
        int iD2 = iRet % 16;
        return strDigits[iD1] + strDigits[iD2];
    }

// 返回形式只为数字
    private static String byteToNum(byte bByte) {
        int iRet = bByte;
        System.out.println("iRet1=" + iRet);
        if (iRet < 0) {
            iRet += 256;
        }
        return String.valueOf(iRet);
    }

// 转换字节数组为16进制字串
    private static String byteToString(byte[] bByte) {
        StringBuffer sBuffer = new StringBuffer();
        for (int i = 0; i < bByte.length; i++) {
            sBuffer.append(byteToArrayString(bByte[i]));
        }
        return sBuffer.toString();
    }

public static String GetMD5Code(String strObj) {
        String resultString = null;
        try {
            resultString = new String(strObj);
            MessageDigest md = MessageDigest.getInstance("MD5");
            // md.digest() 该函数返回值为存放哈希值结果的byte数组
            resultString = byteToString(md.digest(strObj.getBytes()));
        } catch (NoSuchAlgorithmException ex) {
            ex.printStackTrace();
        }
        return resultString;
    }

public static void main(String[] args) {
        MD5 getMD5 = new MD5();
        System.out.println(getMD5.GetMD5Code("000000"));
    }
}

时间: 2024-10-25 03:16:47

Java 实现Md5算法的相关文章

与java一致的md5算法(C++)

工作中需要对网络传输的二进制配置文件进行md5运算生成校验码,以避免在网络传输中,文件的内容发生损坏和篡改.过程中大致是这样的: 1.服务端c++,请求端java: 2.请求端POST请求服务器上的某个文件,要求传输到请求端: 3.向服务端请求文件时,服务端需要对要传输的文件内容作md5加密,生成32字符校验码,将校验码作为http头信息字段传输到请求端: 4.请求端对传过来的文件也进行MD5加密,生成的校验码和服务器传来的做比较,相同即保证了数据的完整性和合法性,并对内容进行处理,否则,丢弃.

密码技术应用设计实践-安全信息传输系统(SITS)(用Java实现DES、RSA、MD5算法)

本系统包括五个模块,注册模块.登录模块.RSA算法模块.DES算法模块.MD5算法模块.这五个模块每一个实现不同的功能.注册模块实现将用户名和密码写入文件中,登录模块则负责将其读入并且判断其是否正确.RSA算法模块实现生成密钥对.加密和解密功能.DES算法模块实现加密和解密功能.MD5算法模块是实现生成摘要的功能. (1).首先为注册界面: package test; import javax.swing.*; import java.awt.*;   //导入必要的包 import java.

Java MD5算法

JAVA MD5算法  MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法. MD5算法的作用是让大容量信息在用数字签名软件签私人密匙前被"压缩"成一种保密的格式,将一个任意长度的"字节串"通过一个不可逆的字符串变换算法变换成一个128bit的大整数. 即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数.

Java利用MessageDigest提供的MD5算法加密字符串或文件

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性.用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm).另外还有一种常用的消息摘要算法SHA1.如果想了解这些的话,可以去百度百科:MD5.SHA1.消息摘要算法. Java已经实现了MD5.SHA1算法.利用java.security.MessageDigest类就可以获取字符串和文件的MD5以及SHA1结果. 1.字符串的MD5(下面的代码有详细注释) public static String s

JAVA md5算法代码

public class MD5 { /** * 签名字符串 * @param text 需要签名的字符串 * @param key 密钥 * @param input_charset 编码格式 * @return 签名结果 */ public static String sign(String text, String key, String input_charset) { text = text + key; return DigestUtils.md5Hex(getContentByte

md5算法的java实现

http://blog.csdn.net/forgotaboutgirl/article/details/7258109 md5算法的java实现,码迷,mamicode.com

MD5算法实现

MD5算法的简要叙述为: MD5以512位分组来处理输入的信息(512位分组?每次处理都取出512位数据?), 每一分组又被划分为16个32位子分组(16乘32刚好是512), 经过一些列的处理后(怎么处理的?),算法的输出由四个32位分组组成, 将这4个32位分组级联后将生成一个128位的散列值(那么这个散列值是最后的加密结果咯). 在MD5算法中,首先需要对信息进行填充,使其位长度对512求余的结果等于448. 因此,信息的位长度(Bits Length)将被扩展至N*512+448,即N*

Java密码学原型算法实现——第一部分:标准Hash算法

题注 从博客中看出来我是个比较钟爱Java的应用密码学研究者.虽然C在密码学中有不可替代的优势:速度快,但是,Java的可移植性使得开发人员可以很快地将代码移植到各个平台,这比C实现要方便的多.尤其是Android平台的出现,Java的应用也就越来越广.因此,我本人在密码学研究过程中实际上也在逐渐使用和封装一些知名的Java密码学库,主要是方便自己使用. Java JDK实际上自带了密码学库,支持几乎所有通用密码学原型的实现.然而,自带密码库有几个缺点:第一,由于版权问题,其并不支持全部的密码学

常用MD5算法代码

常用的MD5算法代码日期: 2014年8月4日作者: 铁锚 MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 维基百科:MD5 MD5加密后是一个字节数组, 但我们一般是取其十六进制的字符串表示法,当然,十六进制数字符串是区分大小写,在 mysql数据库,Java,和JavaScript语言中,一般是使用小写的字符串来表示, 而在 Oracle数据库官方提供的包中,返回的是大写字符串,这算是一个坑,如果你想要执行多次 md5,可能需要转换为小