SKY外语计算机学习
标题:
每日一练:MD5 易语言纯算法公开
[打印本页]
作者:
小克
时间:
2012-10-20 13:46
标题:
每日一练:MD5 易语言纯算法公开
本帖最后由 sky_yx 于 2015-12-30 14:12 编辑
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│加密 │文本型│ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│字节集 │字节集│ │ │ │
└──────────┴────┴───┴───┴───┘
┌──────────┬─────┬───┬──┐
│变量名 │返回值│静态│数组│
├──────────┼────┼───┼───┤
│信息 │整数型│ │ │
├──────────┼─────┼───┼───┤
│长度 │整数型│ │ │
├──────────┼─────┼───┼───┤
│位置 │整数型│ │ │
├──────────┼────┼───┼───┤
│补充 │整数型│ │ │
├──────────┼────┼───┼───┤
│变量 │整数型│ │ │
├──────────┼────┼───┼───┤
│A │整数型│ │ │
├──────────┼────┼───┼───┤
│B │整数型│ │ │
├──────────┼────┼───┼───┤
│C │整数型│ │ │
├──────────┼────┼───┼───┤
│D │整数型│ │ │
├──────────┼────┼───┼───┤
│小a │整数型│ │ │
├──────────┼────┼───┼───┤
│小b │整数型│ │ │
├──────────┼────┼───┼───┤
│小c │整数型│ │ │
├──────────┼────┼───┼───┤
│小d │整数型│ │ │
└──────────┴────┴───┴───┘
A = #dhybf
B = #h5ybsb5y
C = #jur
D = #shbr5sd
位置 = 1
长度 = 取字节集长度 (字节集)
┌─如果真 (长度 ≥ 268435456)
│ 返回 (“”)
ˇ
补充 = 长度 % 64
┌─如果 (补充 ≤ 56)
│ 补充 = 56 - 补充
└┼→
│ 补充 = 120 - 补充
ˇ
长度 = 长度 × 8
┌─如果真 (补充 > 0)
│ 字节集 = 字节集 + { 128 } + 取空白字节集 (补充 - 1)
ˇ
字节集 = 字节集 + 到字节集 (长度) + { 0, 0, 0, 0 }
┌→判断循环首 (位置 ≠ -1)
│┌→变量循环首 (1, 16, 1, 变量)
││ 信息 [变量] = 取字节集数据 (字节集, #整数型, 位置)
│└─变量循环尾 ()
│ 小a = A
│ 小b = B
│ 小c = C
│ 小d = D
│ 轮函数 (小a, 小b, 小c, 小d, 信息)
│ A = 正加法 (A, 小a)
│ B = 正加法 (B, 小b)
│ C = 正加法 (C, 小c)
│ D = 正加法 (D, 小d)
└─判断循环尾 ()
编辑框2.内容 = 编辑框2.内容 + 到文本 (c_整数 [1] - A)
+ “ ” + 到文本 (c_整数 [1] - A) + “ ” + 到文本 (c_
整数 [1] - A) + “ ” + 到文本 (c_整数 [1] - A) + #换行
符
c_整数 [1] = A
c_整数 [2] = B
c_整数 [3] = C
c_整数 [4] = D
返回 (十六转换 (A) + 十六转换 (B) + 十六转换 (C) + 十六
转换 (D))
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│十六转换 │文本型│ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│参数 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
┌──────────┬────┬───┬───┐
│变量名 │返回值│静态│数组│
├──────────┼────┼───┼───┤
│z1 │字节集│ │ │
├──────────┼────┼───┼───┤
│z2 │字节集│ │ │
├──────────┼────┼───┼───┤
│n1 │整数型│ │ │
└──────────┴────┴───┴───┘
z1 = 到字节集 (参数)
z2 = 取字节集右边 (z1, 1) + 取字节集中间 (z1, 3, 1) +
取字节集中间 (z1, 2, 1) + 取字节集左边 (z1, 1)
n1 = 取字节集数据 (z2, 3, 1)
返回 (取重复文本 (8 - 取文本长度 (取十六进制文本 (n1)),
“0”) + 取十六进制文本 (n1))
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│正加法 │整数型│ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│X │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│Y │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
┌──────────┬────┬───┬───┐
│变量名 │返回值│静态│数组│
├──────────┼────┼───┼───┤
│低 │整数型│ │ │
├──────────┼────┼───┼───┤
│高 │整数型│ │ │
└──────────┴────┴───┴───┘
高 = 右移 (X, 16) + 右移 (Y, 16)
低 = 位与 (X, 65535) + 位与 (Y, 65535)
返回 (合并整数 (低, 高 + 右移 (低, 16)))
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│循移 │整数型│ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│n1 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│n2 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
返回 (位或 (左移 (n1, n2), 位与 (右移 (n1, 32 - n2), 求次
方 (2, n2) - 1)))
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│FF │ │ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│A │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│B │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│C │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│D │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│信息 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│n1 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│轮数 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
A = 正加法 (A, 正加法 (正加法 (位或 (位与 (B, C), 位与 (
位取反 (B), D)), 信息), 轮数))
A = 循移 (A, n1)
A = 正加法 (A, B)
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│GG │ │ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│A │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│B │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│C │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│D │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│信息 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│n1 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│轮数 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
A = 正加法 (A, 正加法 (正加法 (位或 (位与 (B, D), 位与 (C
, 位取反 (D))), 信息), 轮数))
A = 循移 (A, n1)
A = 正加法 (A, B)
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│HH │ │ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│A │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│B │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│C │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│D │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│信息 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│n1 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│轮数 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
A = 正加法 (A, 正加法 (正加法 (位异或 (B, C, D), 信息),
轮数))
A = 循移 (A, n1)
A = 正加法 (A, B)
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│II │ │ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│A │整数型│ ∨ │ │ │
└──────────┴────┴───┴───┴───┘
│B │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│C │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│D │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│信息 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│n1 │整数型│ │ │ │
├──────────┼────┼───┼───┼───┤
│轮数 │整数型│ │ │ │
└──────────┴────┴───┴───┴───┘
A = 正加法 (A, 正加法 (正加法 (位异或 (C, 位或 (B, 位取反
(D))), 信息), 轮数))
A = 循移 (A, n1)
A = 正加法 (A, B)
┌──────────┬────┬───┐
│子程序名 │返回值│公开│
├──────────┼────┼───┤
│轮函数 │ │ ∨ │
├──────────┼────┼───┼───┬───┐
│参数名 │ 类型 │参考│可空│数组│
├──────────┼────┼───┼───┼───┤
│A │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│B │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│C │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│D │整数型│ ∨ │ │ │
├──────────┼────┼───┼───┼───┤
│信息 │整数型│ │ │ ∨ │
└──────────┴────┴───┴───┴───┘
FF (A, B, C, D, 信息 [1], 7, 3614090360) ' 0xd76aa478
FF (D, A, B, C, 信息 [2], 12, 3905402710) ' 0xe8c7b756
FF (C, D, A, B, 信息 [3], 17, 606105819) ' 0x242070db
FF (B, C, D, A, 信息 [4], 22, 3250441966) ' 0xc1bdceee
FF (A, B, C, D, 信息 [5], 7, 4118548399) ' 0xf57c0faf
FF (D, A, B, C, 信息 [6], 12, 1200080426) ' 0x4787c62a
FF (C, D, A, B, 信息 [7], 17, 2821735955) ' 0xa8304613
FF (B, C, D, A, 信息 [8], 22, 4249261313) ' 0xfd469501
FF (A, B, C, D, 信息 [9], 7, 1770035416) ' 0x698098d8
FF (D, A, B, C, 信息 [10], 12, 2336552879) ' 0x8b44f7af
FF (C, D, A, B, 信息 [11], 17, 4294925233) ' 0xffff5bb1
FF (B, C, D, A, 信息 [12], 22, 2304563134) ' 0x895cd7be
FF (A, B, C, D, 信息 [13], 7, 1804603682) ' 0x6b901122
FF (D, A, B, C, 信息 [14], 12, 4254626195) ' 0xfd987193
FF (C, D, A, B, 信息 [15], 17, 2792965006) ' 0xa679438e
FF (B, C, D, A, 信息 [16], 22, 1236535329) ' 0x49b40821
GG (A, B, C, D, 信息 [2], 5, 4129170786) ' 0xF61E2562
GG (D, A, B, C, 信息 [7], 9, 3225465664) ' 0xC040B340
GG (C, D, A, B, 信息 [12], 14, 643717713) ' 0x265E5A51
GG (B, C, D, A, 信息 [1], 20, 3921069994) ' 0xE9B6C7AA
GG (A, B, C, D, 信息 [6], 5, 3593408605) ' 0xD62F105D
GG (D, A, B, C, 信息 [11], 9, 38016083) ' 0x2441453
GG (C, D, A, B, 信息 [16], 14, 3634488961) ' 0xD8A1E681
GG (B, C, D, A, 信息 [5], 20, 3889429448) ' 0xE7D3FBC8
GG (A, B, C, D, 信息 [10], 5, 568446438) ' 0x21E1CDE6
GG (D, A, B, C, 信息 [15], 9, 3275163606) ' 0xC33707D6
GG (C, D, A, B, 信息 [4], 14, 4107603335) ' 0xF4D50D87
GG (B, C, D, A, 信息 [9], 20, 1163531501) ' 0x455A14ED
GG (A, B, C, D, 信息 [14], 5, 2850285829) ' 0xA9E3E905
GG (D, A, B, C, 信息 [3], 9, 4243563512) ' 0xFCEFA3F8
GG (C, D, A, B, 信息 [8], 14, 1735328473) ' 0x676F02D9
GG (B, C, D, A, 信息 [13], 20, 2368359562) ' 0x8D2A4C8A
HH (A, B, C, D, 信息 [6], 4, 4294588738) ' 0xFFFA3942
HH (D, A, B, C, 信息 [9], 11, 2272392833) ' 0x8771F681
HH (C, D, A, B, 信息 [12], 16, 1839030562) ' 0x6D9D6122
HH (B, C, D, A, 信息 [15], 23, 4259657740) ' 0xFDE5380C
HH (A, B, C, D, 信息 [2], 4, 2763975236) ' 0xA4BEEA44
HH (D, A, B, C, 信息 [5], 11, 1272893353) ' 0x4BDECFA9
HH (C, D, A, B, 信息 [8], 16, 4139469664) ' 0xF6BB4B60
HH (B, C, D, A, 信息 [11], 23, 3200236656) ' 0xBEBFBC70
HH (A, B, C, D, 信息 [14], 4, 681279174) ' 0x289B7EC6
HH (D, A, B, C, 信息 [1], 11, 3936430074) ' 0xEAA127FA
HH (C, D, A, B, 信息 [4], 16, 3572445317) ' 0xD4EF3085
HH (B, C, D, A, 信息 [7], 23, 76029189) ' 0x4881D05
HH (A, B, C, D, 信息 [10], 4, 3654602809) ' 0xD9D4D039
HH (D, A, B, C, 信息 [13], 11, 3873151461) ' 0xE6DB99E5
HH (C, D, A, B, 信息 [16], 16, 530742520) ' 0x1FA27CF8
HH (B, C, D, A, 信息 [3], 23, 3299628645) ' 0xC4AC5665
II (A, B, C, D, 信息 [1], 6, 4096336452) ' 0xF4292244
II (D, A, B, C, 信息 [8], 10, 1126891415) ' 0x432AFF97
II (C, D, A, B, 信息 [15], 15, 2878612391) ' 0xAB9423A7
II (B, C, D, A, 信息 [6], 21, 4237533241) ' 0xFC93A039
II (A, B, C, D, 信息 [13], 6, 1700485571) ' 0x655B59C3
II (D, A, B, C, 信息 [4], 10, 2399980690) ' 0x8F0CCC92
II (C, D, A, B, 信息 [11], 15, 4293915773) ' 0xFFEFF47D
II (B, C, D, A, 信息 [2], 21, 2240044497) ' 0x85845DD1
II (A, B, C, D, 信息 [9], 6, 1873313359) ' 0x6FA87E4F
II (D, A, B, C, 信息 [16], 10, 4264355552) ' 0xFE2CE6E0
II (C, D, A, B, 信息 [7], 15, 2734768916) ' 0xA3014314
II (B, C, D, A, 信息 [14], 21, 1309151649) ' 0x4E0811A1
II (A, B, C, D, 信息 [5], 6, 4149444226) ' 0xF7537E82
II (D, A, B, C, 信息 [12], 10, 3174756917) ' 0xBD3AF235
II (C, D, A, B, 信息 [3], 15, 718787259) ' 0x2AD7D2BB
II (B, C, D, A, 信息 [10], 21, 3951481745) ' 0xEB86D391
作者:
小克
时间:
2012-10-30 21:41
本帖最后由 sky_yx 于 2015-12-30 14:12 编辑
作者:
乔治
时间:
2013-9-19 09:51
本帖最后由 sky_yx 于 2015-12-30 14:12 编辑
好吧,来看看、
欢迎光临 SKY外语计算机学习 (http://skywj.com/)
Powered by Discuz! X2.5