xiaoguozi's Blog
Pay it forword - 我并不觉的自豪,我所尝试的事情都失败了······习惯原本生活的人不容易改变,就算现状很糟,他们也很难改变,在过程中,他们还是放弃了······他们一放弃,大家就都是输家······让爱传出去,很困难,也无法预料,人们需要更细心的观察别人,要随时注意才能保护别人,因为他们未必知道自己要什么·····
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Copyright (C) Paul Johnston 1999 - 2000.
 * Updated by Greg Holt 2000 - 2001.
 * See http://pajhome.org.uk/site/legal.html for details.
 
*/

var hex_chr = "0123456789abcdef";
function rhex(num) {
    str 
= "";
    
for (j = 0; j <= 3; j++{
        str 
+= hex_chr.charAt((num >> (j * 8 + 4)) & 15+ hex_chr.charAt((num >> (j * 8)) & 15);
    }

    
return str;
}

function str2blks_MD5(str) {
    nblk 
= ((str.length + 8>> 6+ 1;
    blks 
= new Array(nblk * 16);
    
for (i = 0; i < nblk * 16; i++{
        blks[i] 
= 0;
    }

    
for (i = 0; i < str.length; i++{
        blks[i 
>> 2|= str.charCodeAt(i) << ((i % 4* 8);
    }

    blks[i 
>> 2|= 128 << ((i % 4* 8);
    blks[nblk 
* 16 - 2= str.length * 8;
    
return blks;
}

function add(x, y) {
    
var lsw = (x & 65535+ (y & 65535);
    
var msw = (x >> 16+ (y >> 16+ (lsw >> 16);
    
return (msw << 16| (lsw & 65535);
}

function rol(num, cnt) {
    
return (num << cnt) | (num >>> (32 - cnt));
}

function cmn(q, a, b, x, s, t) {
    
return add(rol(add(add(a, q), add(x, t)), s), b);
}

function ff(a, b, c, d, x, s, t) {
    
return cmn((b & c) | ((~b) & d), a, b, x, s, t);
}

function gg(a, b, c, d, x, s, t) {
    
return cmn((b & d) | (c & (~d)), a, b, x, s, t);
}

function hh(a, b, c, d, x, s, t) {
    
return cmn(b ^ c ^ d, a, b, x, s, t);
}

function ii(a, b, c, d, x, s, t) {
    
return cmn(c ^ (b | (~d)), a, b, x, s, t);
}

function MD5(str) {
    x 
= str2blks_MD5(str);
    
var a = 1732584193;
    
var b = -271733879;
    
var c = -1732584194;
    
var d = 271733878;
    
for (i = 0; i < x.length; i += 16{
        
var olda = a;
        
var oldb = b;
        
var oldc = c;
        
var oldd = d;
        a 
= ff(a, b, c, d, x[i + 0], 7-680876936);
        d 
= ff(d, a, b, c, x[i + 1], 12-389564586);
        c 
= ff(c, d, a, b, x[i + 2], 17606105819);
        b 
= ff(b, c, d, a, x[i + 3], 22-1044525330);
        a 
= ff(a, b, c, d, x[i + 4], 7-176418897);
        d 
= ff(d, a, b, c, x[i + 5], 121200080426);
        c 
= ff(c, d, a, b, x[i + 6], 17-1473231341);
        b 
= ff(b, c, d, a, x[i + 7], 22-45705983);
        a 
= ff(a, b, c, d, x[i + 8], 71770035416);
        d 
= ff(d, a, b, c, x[i + 9], 12-1958414417);
        c 
= ff(c, d, a, b, x[i + 10], 17-42063);
        b 
= ff(b, c, d, a, x[i + 11], 22-1990404162);
        a 
= ff(a, b, c, d, x[i + 12], 71804603682);
        d 
= ff(d, a, b, c, x[i + 13], 12-40341101);
        c 
= ff(c, d, a, b, x[i + 14], 17-1502002290);
        b 
= ff(b, c, d, a, x[i + 15], 221236535329);
        a 
= gg(a, b, c, d, x[i + 1], 5-165796510);
        d 
= gg(d, a, b, c, x[i + 6], 9-1069501632);
        c 
= gg(c, d, a, b, x[i + 11], 14643717713);
        b 
= gg(b, c, d, a, x[i + 0], 20-373897302);
        a 
= gg(a, b, c, d, x[i + 5], 5-701558691);
        d 
= gg(d, a, b, c, x[i + 10], 938016083);
        c 
= gg(c, d, a, b, x[i + 15], 14-660478335);
        b 
= gg(b, c, d, a, x[i + 4], 20-405537848);
        a 
= gg(a, b, c, d, x[i + 9], 5568446438);
        d 
= gg(d, a, b, c, x[i + 14], 9-1019803690);
        c 
= gg(c, d, a, b, x[i + 3], 14-187363961);
        b 
= gg(b, c, d, a, x[i + 8], 201163531501);
        a 
= gg(a, b, c, d, x[i + 13], 5-1444681467);
        d 
= gg(d, a, b, c, x[i + 2], 9-51403784);
        c 
= gg(c, d, a, b, x[i + 7], 141735328473);
        b 
= gg(b, c, d, a, x[i + 12], 20-1926607734);
        a 
= hh(a, b, c, d, x[i + 5], 4-378558);
        d 
= hh(d, a, b, c, x[i + 8], 11-2022574463);
        c 
= hh(c, d, a, b, x[i + 11], 161839030562);
        b 
= hh(b, c, d, a, x[i + 14], 23-35309556);
        a 
= hh(a, b, c, d, x[i + 1], 4-1530992060);
        d 
= hh(d, a, b, c, x[i + 4], 111272893353);
        c 
= hh(c, d, a, b, x[i + 7], 16-155497632);
        b 
= hh(b, c, d, a, x[i + 10], 23-1094730640);
        a 
= hh(a, b, c, d, x[i + 13], 4681279174);
        d 
= hh(d, a, b, c, x[i + 0], 11-358537222);
        c 
= hh(c, d, a, b, x[i + 3], 16-722521979);
        b 
= hh(b, c, d, a, x[i + 6], 2376029189);
        a 
= hh(a, b, c, d, x[i + 9], 4-640364487);
        d 
= hh(d, a, b, c, x[i + 12], 11-421815835);
        c 
= hh(c, d, a, b, x[i + 15], 16530742520);
        b 
= hh(b, c, d, a, x[i + 2], 23-995338651);
        a 
= ii(a, b, c, d, x[i + 0], 6-198630844);
        d 
= ii(d, a, b, c, x[i + 7], 101126891415);
        c 
= ii(c, d, a, b, x[i + 14], 15-1416354905);
        b 
= ii(b, c, d, a, x[i + 5], 21-57434055);
        a 
= ii(a, b, c, d, x[i + 12], 61700485571);
        d 
= ii(d, a, b, c, x[i + 3], 10-1894986606);
        c 
= ii(c, d, a, b, x[i + 10], 15-1051523);
        b 
= ii(b, c, d, a, x[i + 1], 21-2054922799);
        a 
= ii(a, b, c, d, x[i + 8], 61873313359);
        d 
= ii(d, a, b, c, x[i + 15], 10-30611744);
        c 
= ii(c, d, a, b, x[i + 6], 15-1560198380);
        b 
= ii(b, c, d, a, x[i + 13], 211309151649);
        a 
= ii(a, b, c, d, x[i + 4], 6-145523070);
        d 
= ii(d, a, b, c, x[i + 11], 10-1120210379);
        c 
= ii(c, d, a, b, x[i + 2], 15718787259);
        b 
= ii(b, c, d, a, x[i + 9], 21-343485551);
        a 
= add(a, olda);
        b 
= add(b, oldb);
        c 
= add(c, oldc);
        d 
= add(d, oldd);
    }

    
return rhex(a) + rhex(b) + rhex(c) + rhex(d);
}
posted on 2009-06-13 17:05 小果子 阅读(178) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理