ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:20.86KB ,
资源ID:3193023      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3193023.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在JSP中如何实现MD5加密的方法.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

在JSP中如何实现MD5加密的方法.docx

1、在JSP中如何实现MD5加密的方法在JSP中如何实现MD5加密的方法这篇文章主要介绍了在JSP中如何实现MD5加密的方法,较为详细的分析了JSP采用MD5加密的功能、特点及实现技巧,具有一定参考借鉴价值,在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍在JSP中如何实现MD5加密的方法,希望能抛砖引玉。(一)消息摘要简介 一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技

2、术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。消息摘要有两个基本属性: 两个不同的报文难以生成相同的摘要难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要。Java源码import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Digest private MessageDigest _md5 = null; private StringBuffer _

3、digestBuffer = null; public MD5Digest() throws NoSuchAlgorithmException _md5 = MessageDigest.getInstance(MD5); _digestBuffer = new StringBuffer(); public String md5crypt(String s) _digestBuffer.setLength(0); byte abyte0 = _md5.digest(s.getBytes(); for(int i = 0; i 4); result1=HEX.charAt(one & 0x0f);

4、 String mm=new String(result); return mm; /* MD5 算法的Java Bean author:Topcat Tuppin Last Modified:10,Mar,2001 */package beartool; import java.lang.reflect.*; /* md5 类实现了RSA Data Security, Inc.在提交给IETF 的RFC1321中的MD5 message-digest 算法。 */public class MD5 /* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的

5、, 这里把它们实现成为static final是表示了只读,切能在同一个进程空间内的多个 Instance间共享*/ static final int S11 = 7; static final int S12 = 12; static final int S13 = 17; static final int S14 = 22; static final int S21 = 5; static final int S22 = 9; static final int S23 = 14; static final int S24 = 20; static final int S31 = 4; st

6、atic final int S32 = 11; static final int S33 = 16; static final int S34 = 23; static final int S41 = 6; static final int S42 = 10; static final int S43 = 15; static final int S44 = 21; static final byte PADDING = -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

7、 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; /* 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中 被定义到MD5_CTX结构中 */ private long state = new long4;/ state (ABCD) private long count = new long2;/ number of bits, modulo 264 (lsb first) private byte buf

8、fer = new byte64; / input buffer /* digestHexStr是MD5的唯一一个公共成员,是最新一次计算结果的 16进制ASCII表示. */ public String digestHexStr; /* digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值. */ private byte digest = new byte16; /* getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的 */ public String g

9、etMD5ofStr(String inbuf) md5Init(); md5Update(inbuf.getBytes(), inbuf.length(); md5Final(); digestHexStr = ; for (int i = 0; i 16; i+) digestHexStr += byteHEX(digesti); return digestHexStr; / 这是MD5这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数 public MD5() md5Init(); return; /* md5Init是一个初始化函数,初始化核心变量,装

10、入标准的幻数 */ private void md5Init() count0 = 0L; count1 = 0L; /* Load magic initialization constants. state0 = 0x67452301L; state1 = 0xefcdab89L; state2 = 0x98badcfeL; state3 = 0x10325476L; return; /* F, G, H ,I 是4个基本的MD5函数,在原始的MD5的C实现中,由于它们是 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C

11、中的。 */ private long F(long x, long y, long z) return (x & y) | (x) & z); private long G(long x, long y, long z) return (x & z) | (y & (z); private long H(long x, long y, long z) return x y z; private long I(long x, long y, long z) return y (x | (z); /* FF,GG,HH和II将调用F,G,H,I进行近一步变换 FF, GG, HH, and II

12、 transformations for rounds 1, 2, 3, and 4. Rotation is separate from addition to prevent recomputation. */ private long FF(long a, long b, long c, long d, long x, long s, long ac) a += F (b, c, d) + x + ac; a = (int) a (32 - s); a += b; return a; private long GG(long a, long b, long c, long d, long x, long s, long ac) a += G (b, c, d) + x + ac; a = (int) a (32 - s); a += b; return a; private long HH(long a, long b, long c, long d, long x, long s, long ac) a += H (b, c, d) + x + ac; a = (int) a (32 - s);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1