APP下载

MD5加密算法的研究与应用

2015-05-30徐蕊

中国新通信 2015年21期
关键词:加密

徐蕊

【摘要】 当今世界,人们在关键业务和行业部门大量的采用计算系统和网络技术,从而带来了新的威胁和风险,如未经授权的访问、信息窃取和篡改、病毒传输等。文章针对数据的机密性和完整性提出一种基于MD5单向加密技术的扩展,并通过对该算法的深入研究,介绍MD5加密算法的基本原理和实现流程,并给出此加密算法利用Java语言编程在实际系统的使用方法和使用效果。

【关键词】 MD5 加密 Java

一、引言

在信息行业,安全从未像今天这样重要。安全是一个涉及面很广的问题,在信息系统的各个环节中都至关重要。因此,在谈到信息安全时,可以指多个领域:应用、数据、网络、通信、用户和主机系统等等。在这些领域中,一项共同的安全需求和目标是对数据的保护,这进一步突出了安全的重要性,要求所有企业和组织承担起伦理和法律责任,采取适当的措施和步骤确保信息安全。在各个层面采取安全措施,可确保信息可靠的处理、存储或传输,同时让任何得到授权的实体都能够使用它们。其中,单向数字签名散列算法更是使数据完整性验证和通过混淆保护数据的机密性成为可能。

二、MD5算法的研究与扩展

2.1 MD5算法的描述

MD5是一种迭代型强加密单向散列函数。单向散列函数指的是根据输入消息(任何字节串,如文本字符串、Word文档、JPG文件等)输出固定长度数值的算法,输出数值也称为“散列值”或“消息摘要”,其长度取决于所采用的算法,MD5生成128位的散列值。为了实现对数据的认证的目的,散列函数应满足以下条件:(1)函数的输入可以是任意长。(2)函数的输出是固定长。(3)已知x,求H(x)较为容易,可用硬件或者软件实现。(4)已知h,求使得H(x)=h的x在计算上是不可行的,这一性质称为函数的单向性,称H(x)为单向散列函数。(5)已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。如果单向杂凑函数满足这一性质,则称其为弱单向杂凑函数。(6)找出任意两个不同的輸入x、y,使得H(y)=H(x)在计算上是不可行的,则称其为强单向杂凑函数。MD5算法结构采用迭代型杂凑函数的一般结构。其中,CV0=IV=n比特长的初值;CVi=f(CVi-1,Yi-1)1≤i≤L;H(M)=CVL;CVi-1,称为链接变量;通常b>n,称函数f为压缩函数。

2.2 MD5算法的扩展

在数据的加密处理方面,MD5总体看来是安全的,目前破解MD5主要依靠大型字典的方法,将常用密码进行MD5后建立数据库,然后和MD5数值进行对比,通过这样的方法来破解MD5。为了应对大型字典破译的问题,提出一种基于MD5算法扩展的加密方法。基于MD5算法的扩展算法流程是,原始的数据信息首先经过MD5的单向加密得到加密数据,然后对加密数据再利用双向加密算法加密。得到最终的加密信息由于采用二次加密,且二次加密算法和对应参数多样和未知性,如DES、RSA等,从而使MD5大型字典破解方法完全失效。

三、MD5算法的应用

3.1 Java安全架构与技术

Java平台提供了一种通用的面向对象编程语言和一个标准的运行环境,可用于开发和实现安全的跨平台应用解决方案。为提供基于Java平台的应用解决方案的端到端安全,Java运行环境和Java语言在格式和结构方面对代码及其执行环境做了严格的限制,从而提供了全面的安全基础。Java之所以能成为安全可靠的运行环境,在很大程度上应归功于Java架构基础的固有的安全性,该架构包括Java虚拟机和Java语言,其中JVM提供了内置的安全策略、访问控制机制和安全扩展。在J2SE中,JCA为Java平台提供加密服务和算法,以保护消息的安全。JCA定义了提供者概念及一个用于访问加密服务和实现相关功能的一般API框架。通过标准化API框架和提供者实现,JCA还提供了算法和实现的独立性。MD5消息摘要是单向安全散列函数,在J2SE中,JCA提供者支持消息摘要算法:消息摘要算法5(Message Digest 5, MD5),MD5可生成128位散列值。消息摘要使用引擎类java.security.MessageDigest表示,其形式为字节数组,MessageDigest.getInstance创建一个实现了指定算法的消息摘要对象实例,条件是提供者支持该算法。方法MessageDigest.update使用由字节数组指定的数据更新摘要,而方法MessageDigest.digest计算散列值并返回一个字节数组。

3.2 MD5算法扩展的应用

随着信息技术的飞速发展,拥有着效率高、便捷性强等特性的信息系统被越来越多的企业和个人使用,信息系统一般都会采取用户名和密码结合的登录方式进行身份验证,此时用户名和密码及其其他敏感信息会存入数据库中保存,然而如果服务器和数据库被人攻破,用户的密码将会暴露,从而导致很严重的后果。现给出基于MD5扩展算法并采用Java语言编程的核心代码,此算法已应用于无线局科技服务管理系统,用于解决用户密码安全问题。

四、结束语

通过对MD5加密算法的研究分析得出,MD5的核心是压缩函数,也正因如此MD5是一种不可逆的安全性很高的加密算法,但却收到大字典攻击的威胁,从而导致强度弱的密码被泄露,通过在MD5加密算法原有基础上的扩展,克服了外界的攻击,增强了加密算法的强壮性,这种基于MD5扩展的加密算法,可用于保护数据库敏感信息、身份验证、数据完整性等方面。

猜你喜欢

加密
一种基于熵的混沌加密小波变换水印算法
加密与解密
一种基于LWE的同态加密方案
认证加密的研究进展
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密