`
qiujiayu
  • 浏览: 173542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何保证MD5加密结果在不同的环境下都相同

    博客分类:
  • JAVA
阅读更多

首先我们来看一下Java是如何实现MD5的:

 

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Digest {

    private static MessageDigest md5=null;

    public static String getDigest(String msg) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        if(null == md5) {
            md5=MessageDigest.getInstance("MD5");
        }
        byte[] byteArray=null;
        byteArray=msg.getBytes();
        byte[] md5Bytes=md5.digest(byteArray);
        StringBuffer hexValue=new StringBuffer();
        for(int i=0; i < md5Bytes.length; i++) {
            int val=((int)md5Bytes[i]) & 0xff;
            if(val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }
        return hexValue.toString();
    }
   
    public static void main(String []args) throws UnsupportedEncodingException, NoSuchAlgorithmException{
        System.out.println(getDigest("test测试"));
    }
}

 

通过上面的代码我们会发现一个问题

byteArray=msg.getBytes();

在不同的环境下获得的结果可能是不一样的,这样也造成很多MD5结果不一样。

所以要保证在不同环境下MD5结果相同那么必须使用相同的字符编码,比如:byteArray=msg.getBytes("ISO-8859-1");

 

分享到:
评论

相关推荐

    Md5加密(dos下操作)

    如果你收到的压缩包文件名为“MD5加密(dos操作)”,里面可能包含一个DOS下的MD5加密指南或者工具,帮助用户理解如何在DOS环境下进行MD5操作。了解这个过程对于理解基础的网络安全和数据完整性概念是非常有价值的,但...

    MD5 加密工具源码

    MD5虽然在安全性上存在一定的弱点,如容易碰撞(两个不同的数据可能产生相同的哈希值),但在许多场景下仍然被用作快速校验数据完整性的手段。不过,对于密码存储,现在更推荐使用如SHA-256等更安全的哈希算法,同时...

    MD5编码、MD5加密解密demo

    因此,我们通常不会说"MD5解密",而是说"MD5碰撞",即寻找两个不同的输入数据,它们的MD5摘要相同,但这在实际应用中是非常困难的,尤其是在大量数据下。 MD5的工作原理是通过一系列复杂的数学运算(包括位移、异或...

    MD5加密就JS文件

    在使用MD5加密时需要注意,虽然MD5在很多场合下足够安全,但其存在碰撞攻击的可能,即不同的输入可能会产生相同的输出。因此,对于密码存储,通常会结合盐值(salt)一起使用,提高安全性。此外,MD5不适用于防止...

    esp8266 MD5的加密

    在实际编程中,你需要根据`ESP8266_RTOS_Md5`提供的文档或源码来学习如何在ESP8266的RTOS环境下实现MD5加密。这通常涉及创建任务、调用MD5库函数、处理异步事件等步骤。通过深入理解MD5算法和ESP8266的特性,你可以...

    几个MD5加密的例子

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的...通过研究这些MD5加密的例子,我们可以更好地理解其工作原理,以及为什么在如今的网络安全环境中,更强大的加密算法如SHA-256等已经替代了MD5。

    JS(javascript)-md5加密工具类

    综上所述,JavaScript中的MD5加密工具类主要用于数据的哈希处理,虽然存在安全性问题,但在某些特定场景下仍然有其用武之地。了解并熟练运用这些工具,对于提升JavaScript项目的安全性以及数据处理能力至关重要。

    易语言MD5加密

    易语言MD5加密是一种在易语言编程环境下实现的密码学安全哈希算法,主要用于确保数据的完整性和一致性。MD5(Message-Digest Algorithm 5)是计算机科学领域广泛使用的哈希函数,它能够将任意长度的数据转化为固定...

    MD5.rar_MD5.dll_dll加密_md5_md5加密dll

    然而,需要注意的是,尽管MD5在很多年前被认为是安全的,但随着计算能力的提升,MD5的碰撞攻击变得相对容易,这意味着可以找到两个不同的输入数据,它们的MD5散列值相同。因此,MD5不再适合用于安全性要求高的场景,...

    md5加密,原生js使用md5加密

    在JavaScript环境中,尽管JavaScript本身并不内置MD5函数,但可以通过引入外部库,如`jquery.md5.js`来实现MD5加密。 以下是对MD5加密和如何在原生JavaScript中使用MD5进行密码加密的详细讲解: 1. MD5的工作原理...

    MD5 加密解密例子

    在Java EE(J2EE)环境中,MD5加密通常结合各种框架如Struts、Spring和Hibernate来实现。Struts是MVC架构的Web开发框架,Spring提供了全面的DI(依赖注入)和AOP(面向切面编程)功能,而Hibernate则是一个流行的ORM...

    脚本MD5加密.zip

    此外,MD5也曾在密码存储中发挥作用,但因为其存在碰撞风险(即不同的输入可能会产生相同的哈希值),现在的安全实践更倾向于使用如SHA-256等更安全的哈希算法。 对于脚本中的MD5加密方法,可能包含以下几个关键...

    PB内嵌的MD5加密控件

    PB内嵌的MD5加密控件是一种在PowerBuilder(PB)环境中实现MD5加密功能的方法,无需依赖外部的DLL动态链接库。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转换为固定长度的...

    javascript md5加密 js文件

    - **抗碰撞性**:理想情况下,不同的输入会产生不同的哈希值,但随着计算能力的发展,已发现MD5存在碰撞漏洞,即不同的数据可能会产生相同的哈希值。 - **固定长度输出**:无论输入数据多长,MD5都会生成固定长度...

    加密和解密(MD5)

    请注意,MD5虽然在一些场景下仍被使用,但它已不再适合用于密码存储,因为容易产生碰撞,即两个不同的输入可能得到相同的哈希值。在现代密码学中,更推荐使用像SHA-256或更安全的哈希算法,结合盐值和迭代次数以增加...

    MD5加密代码实现

    虽然MD5不被认为是一种安全的加密算法,因为它容易遭受碰撞攻击,即找到两个不同的输入数据,但它们的MD5摘要相同,但在一些场景下,如文件完整性校验,MD5仍然是有用的。 描述中的"MD5机密,直接包含,即可使用。...

    MD5加密代码

    最后,`md5.sln`是Visual Studio解决方案文件,用于在Windows环境下管理和编译项目。 在使用MD5加密数据时,需要注意以下几点: 1. MD5不适用于密码加密:由于碰撞问题,MD5不应用于存储用户密码。通常会使用更安全...

    加密工具_md5加密netcore_

    以下将详细介绍如何在.NET Core 2.0环境下使用MD5进行数据加密。 首先,让我们了解MD5的基本原理。MD5的主要作用是生成一个数字指纹,这个指纹对于给定的输入数据是唯一的。尽管MD5已被发现存在碰撞(即不同的输入...

    MD5算法的ASP实现,MD5简介,MD5加密解密vb工程

    在提供的压缩包文件中,"MD5.doc"可能是关于MD5算法的详细文档,涵盖了MD5的基本概念、工作原理以及在ASP环境下的应用实例;"MD5算法的ASP实现.pdf"则可能包含了具体的代码示例,指导如何在ASP中编写和使用MD5加密的...

    md5加密js文件

    虽然MD5在理论上已被证明存在碰撞(即不同的输入可以产生相同的哈希值),但在实际应用中,找到一对碰撞的输入非常困难,因此仍被广泛使用。 2. 单向性:MD5过程是单向的,从原始数据到MD5摘要容易,但从MD5摘要...

Global site tag (gtag.js) - Google Analytics