基于改进的MD5算法的javaweb登录认证外文翻译资料

 2022-07-11 10:07

英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料


基于改进的MD5算法的javaweb登录认证

摘要:

MD5(消息摘要算法)在数字签名、身份验证和数据加密等方面发挥着重要的作用,因为它具有强大的单向加密和不可逆转的特殊能力。因此,MD5在登录认证模块中被广泛使用,在这个模块中,密码是通过MD5算法进行加密的。登录过程是比较加密的密码值和存储在数据库中的密码,这不再是原来的密码匹配。由于传统的MD5算法不能很好地对抗碰撞攻击、差分攻击和字典攻击,本文提出了一种改进的MD5算法来解决这些问题。首先将密码输入数字和字符形式,然后数字分别加1, 2, 3,同时,字符在ASCII值中添加1,通过数字和字符的加密组合形成最终密码。实验证明,该算法能有效地抵抗蛮力攻击和差分攻击。基于改进的MD5算法的JAVAWEB登录身份验证。

索引术语:MD5、登录身份验证、加密、改进的MD5方法

1.简介

随着技术领域不断进步,许多技术每天都在革新,越来越多的用户从互联网传输数据,因此,如何保证网络通信的可靠性和安全性已逐渐成为一个研究热点,其关键是如何确保传输数据和存储数据的安全。

如今,在网上处理业务的办公自动化已经逐渐取代了传统的办公模式。在很多公司,每个员工都有自己的用户名和密码,可以登录自己公司的办公室系统处理日常工作。当然,所有的用户信息和办公室信息都由管理员管理。想象一下,如果我们把用户信息,如用户名和密码以明文的形式直接没有任何特殊的过程,一旦公司的数据库服务被入侵,入侵者可以登录到整个公司系统获取用户名和密码,尤其是当管理员帐户信息被盗,入侵者不仅可以登录公司的系统,但也可以修改其他用户的信息和功能模块,可能会造成不可估量的损失。因此,为了防止非法访问服务器数据库,几乎所有系统都选择将密码和用户密码直接加密以密文的形式存储在数据库中。这种方法在数据库攻击的情况下充分利用了明文的隐身能力,即使攻击者最终获得了数据库信息,它仍然不能在系统中操作和修改数据。用户所有的损失在某种程度上只是对所有数据的入侵。

2.相关工作

为了登录身份验证和数据保护,哈希函数和加密是两种被广泛使用的方法。

我们都知道,加密算法可以分为对称加密算法和非对称加密算法。1972年,IBM[1]开发了DES算法,是典型的对称加密算法,它使用64位的明文作为输入变量块,最终得到64位输出密文块,另外,该算法使用64位密钥,导致一些缺点如短长度的密钥不能有效抵抗蛮力攻击。1978年,Ron Rivest、ADI沙米尔和Ron Rivest提出了RSA 2算法,这是第一个不仅可以用于数据加密还可以用于数字签名的算法。在这种方法中,公钥用于加密数据,用户使用私钥解密,因此是定性非对称加密算法。这种方法的安全性取决于大量的分解,因此安全性相对较高。缺点是操作速度比DES慢(即使是最快的RSA加密算法也比DES算法慢了几倍)。

哈希算法,也称为消息摘要算法,是为任意消息生成唯一消息摘要的算法。摘要可以被看作消息的指纹,它必须具有以下属性:第一,散列必须很容易计算。

第二,要从摘要中计算消息一定非常困难,第三,很难找到与第一个消息相同的消息摘要的另一个消息。哈希算法在一般的加密协议和网络通信中被广泛使用。

有几种广泛使用的散列算法。其中最著名的是由Ronald Rivest 所开发的MD5消息摘要算法。其他常见的算法是sha-1和它的变种和ripeemd160。众所周知,2005年山东大学教授Xiaoyun Wang提出了两种经典的哈希算法系统(MD5和sha-1)的破解策略,这样就使哈希算法的碰撞成为可能。本文提出了一种基于MD5算法的新方法,以完成用户的登录验证,同时也能同时抵抗野蛮攻击和差异攻击。

3.MD5算法

MD5(消息-摘要算法)作为一种典型的哈希函数,于1992年由Ronald Rivest教授提出,他还提出了RSA公钥加密算法。该方法以任意长度的输入信息作为输入,输出为输入的128位“指纹”或“消息摘要”。据推测,生成具有相同消息摘要的两条消息或者生成具有给定预先指定的目标消息摘要的消息是不可行的。MD5算法适用于数字签名应用程序,其中一个大的文件必须以安全的方式“压缩”,然后在像RSA这样的公钥密码系统下使用私有(秘密)密钥进行加密。一般来说,MD5算法首先处理消息,通过将它们划分为不同的块,并根据每个512位单独处理。然后每个小块被分成16组,每组长度是32位。经过一系列处理之后,输出由四个不同的组组成,生成一个128位的散列值。MD5算法过程在图1中显示。

假设输入消息的长度是一位消息。特定的加密步骤如下所示:

1.附加填充位

如果输入信息(a-bit消息)的长度除以512不等于418,那么消息就必须填充位。填充的过程是在消息的末尾添加一个1位。然后,添加0位,直到消息的长度与448,模5512相等。最后,扩展的长度如下:

L=N*512 448,N是大于等于0的整数

2.附加长度

一个64位的信息表示被追加到填充的结果中。因此,结果消息是一个512位的倍数。请注意,64位整数是输入数据的原始长度,而不是字节的长度。

如果你没有注意到这一点,你将会遇到很大的麻烦。你可以看到,在此过程之后,消息的长度显示为如下:

L=N*512 448 64=(N 1)*512 (1)

3.参数初始化

让四个32位的整数参数A、B、C和D计算消息。在开始时,每个变量的初始化如下:

A=0X67452301L

B=0XEFCDAB89L (2)

C=0X98BADCFEL

D=0X10325476L

首先定义四个循环操作的函数,我们引入四个基本的位操作函数。

X、Y、和Z是32位整数

F(X,Y,Z)=(X and Y) or(not(X) and Z)

G(X,Y,Z)=(X and Z) or(not(Z) and Y) (3)

H(X,Y,Z)=X xor Y xor Z

I(X,Y,Z)=Y xor (X or not(Z))

接下来,我们必须知道四个循环函数。公式表达式如下:

让Mj表示M(从0到15)的第j块,lt;lt;lt;s代表的是由s位的移位,Ti是64个32位的常数的表。Ti的值等于这个公式的32个字节的整数部分:4294967296* abs(sin(i)),单位i在括弧内。i的值是从1到64。考虑到算法的安全性,在表1中显示的Ti的常数只是其中的一部分。如果你想要总值,你可以在第14个文件中找到它们

5.四轮循环操作

如上所述,消息M被分成512位的块,分别处理。在此过程中,每个块也被划分为16个组。我们都知道,MD5算法由4个回合组成,每一个都包含16个步骤。MD5算法的过程是开始时A被设置为AA,B为BB,c为CC,D为DD。然后,每一轮循环使用所提到的公式(4)。

最后,将临时变量的值添加到从算法中获得的值中,即

A=A AA

B=B BB

C=C CC

D=D DD

当使用该算法处理所有Xj时,M的消息摘要在A、B、C和D中。A的低阶字节是摘要的第一个字节,而D的高阶字节是它的最后一个字节。因此,最终输出是128位。

4.改进的MD5算法

在最后一章中,我们将介绍MD5算法。

我们知道MD5使用的是单向加密算法,它有两个非常重要的特征,一个是任意的在文本加密的两端都是不一样的;二是文本加密的任何部分都是相同的。这意味着文本的两端都不能用相同的加密方式加密,相同的文本加密总是相同的。换句话说,在已知的原始数据和前提的MD5值中,可以找到与数据相同的MD5值(例如伪造数据)是非常困难的,同时,要找到两个具有相同MD5值的不同数据是非常困难的。因此,MD5算法在网站登录认证中得到了广泛的应用。

众所周知,在2009年,Xie Tao和Feng Dengguo 只使用了220.96个碰撞算法的复杂性,打破了MD5冲突的阻力,对普通计算机的攻击只运行了几秒钟。尽管MD5算法自2009年以来已经破解,但我们仍然认为,如果我们在数据库中存储的密码不再是原来的密码,那么它可以用于登录认证。

即使攻击者获得了密码MD5加密,他们也会破解密码,以获取行密码,而这并不是用户设置的初始密码。从上面的描述可以看出,在经过一些特殊的改进之后,MD5算法仍然可以用于登录身份验证。改进的关键是如何传输用户设置的初始密码。为此,提出了一种基于MD5的算法,该算法的图流显示为图2。

从改进MD5算法的流程图中可以看出,该方法的主要思想是阻止字符和数字的处理。具体的操作程序如下:

步骤1:块密码

当用户在表单中输入密码时,Spring MVC控制器将从请求中获得密码。

然后,密码将被分为数字字符和英语字符,由Java语言完成;

步骤2:处理数字部分

在块处理后,数字部分,分别根据事件的先后顺序,完成 1、 2、 3....操作。然后,每一个数字都除以10得到余数。因此,余数的序列构成数字部分输入。

计算公式如下(6),n是数字的值,i表示数字数字的第i次出现。

n=(n i)mod10 (6)

步骤3:处理字符块

在英语字符块中,每一个字符都执行以下转换:a-gt;b,b-gt;c,...z-gt;a, A-gt;B, B-gt;C...Z-gt;A。

简而言之,加密可以用模块式算术来表示,首先将字母转换成数字,根据该方案,A(a)=0,B(b)=1,hellip;Z(z)=25。

字母c移位1的的加密可以被描述为(7)。此外,英语中的字符序列被用作字符块的最终输入。

c=(c 1)mod26

步骤4:MD5加密

将数字序列和字符序列的组合作为输入密码,由MD5算法进行加密。在进程的最后,加密的数据最终会被保存到数据库中。

我们已经对改进的算法的具体过程进行了详细的描述,下一步是介绍如何在JavaWeb站点登录身份验证中使用该算法。老实说,登录身份验证的过程是比较数据库中的存储数据和登录页面中用户输入的“密码”,然后通过改进的MD5算法进行加密。

5.实验结果

最后一章描述了改进的MD5算法,该算法主要用于Java语言的完成。它的主要应用是实现基于SSM(Spring、SpringMVC和Mybatis)的宝山门户系统登录身份验证。首先,所有用户通过网站注册页面实现用户信息的注册,如下面的图3所示:

当用户填写诸如用户名、电子邮件密码等基本信息时,用户点击“注册”按钮,信息就会被提交到服务中,密码将通过改进的MD5算法进行加密。最后,用户名和密码将在MySQL数据库中存储,作为用户登录时的比较部分。数据库表如下面的图4所示:

当用户使用他们的用户名和密码进入宝山门户系统时,服务所做的是加密密码,并从用户信息表中选择数据,看是否具有相同的用户名和密码。改进的MD5算法比基本的MD5算法更安全可靠,可以通过表2和表3来证明。

为了更好地进行比较,这两种算法具有相同的输入密码。在表1中,我们使用基础的MD5加密输入密码并使用改进的MD5算法来处理相同的输入。从两个表中,我们可以很容易地看到它们都有相同长度的加密密码。但是,表2中的加密密码更容易被蛮力攻击,以获得原始密码用户设置的密码。改进的MD5方法使用转换输入密码,这在现有的详尽列表中是不正常的,因此它比基本的MD5算法更可靠。即使有一些简单的密码被破解,攻击者得到的是转换密码,而不是原来的密码,因此,他仍然不能登录系统。

6.结论

实验证明,基于改进的MD5加密算法,可以有效地保护用户的密码信息,因为存储在数据库中的密码不再是真正的用户密码,而是用户密码按照数据顺序加上1 ,2, 3...数字代码,然后将密码加密。也就是说,使用攻击和蛮力攻击被称为“明文”,但不是真正的用户密码,很好的解决了使用已知明文和MD5加密的密文的情况下,从用户表和侵略反向查找得到用户的密码的问题。这种算法的缺点是不可逆转的,一旦用户忘记了密码,就不能使用传统的方式修改密码,只需要重新设置密码,或者由管理员重新设置密码。

当然,这一算法也有一些改进,比如限制输入密码的长度,密码必须要有数字、英文字符和一些特殊的符号。此外,我们还可以结合MD5和sha-1加密算法来改进现有算法的性能。总的来说,基于改进的MD5加密算法可以有效地解决用户登录认证的安全问题,而且加密的速度也非常快。

7.声明

该研究得到了中国国家自然科学基金(No。61373084)和上海市教育委员会创新计划(No14YZ011)的部分支持。

Asp.Net应用程序的安全观点

摘要

本文介绍了一种web应用程序安全维护的方法还在ASP.NET应用程序在安全性的基本方面提供了实现所需安全性所需的操作,以及在NET框架中代码的安全方法。它显示了用户身份验证、wi

全文共11441字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[9803],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。