Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
82494cad
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
82494cad
编写于
7月 03, 2011
作者:
M
Mans Rullgard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
md5: cosmetics
Signed-off-by:
N
Mans Rullgard
<
mans@mansr.com
>
上级
fa49fc72
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
48 deletion
+61
-48
libavutil/md5.c
libavutil/md5.c
+61
-48
未找到文件。
libavutil/md5.c
浏览文件 @
82494cad
...
...
@@ -41,7 +41,7 @@ typedef struct AVMD5{
uint32_t
ABCD
[
4
];
}
AVMD5
;
const
int
av_md5_size
=
sizeof
(
AVMD5
);
const
int
av_md5_size
=
sizeof
(
AVMD5
);
static
const
uint8_t
S
[
4
][
4
]
=
{
{
7
,
12
,
17
,
22
},
/* round 1 */
...
...
@@ -72,42 +72,49 @@ static const uint32_t T[64] = { // T[i]= fabs(sin(i+1)<<32)
0xf7537e82
,
0xbd3af235
,
0x2ad7d2bb
,
0xeb86d391
,
};
#define CORE(i, a, b, c, d) \
t = S[i>>4][i&3];\
a += T[i];\
\
if(i<32){\
if(i<16) a += (d ^ (b&(c^d))) + X[ i &15 ];\
else a += (c ^ (d&(c^b))) + X[ (1+5*i)&15 ];\
}else{\
if(i<48) a += (b^c^d) + X[ (5+3*i)&15 ];\
else a += (c^(b|~d)) + X[ ( 7*i)&15 ];\
}\
a = b + (( a << t ) | ( a >> (32 - t) ));
static
void
body
(
uint32_t
ABCD
[
4
],
uint32_t
X
[
16
]){
#define CORE(i, a, b, c, d) do { \
t = S[i >> 4][i & 3]; \
a += T[i]; \
\
if (i < 32) { \
if (i < 16) a += (d ^ (b & (c ^ d))) + X[ i & 15]; \
else a += (c ^ (d & (c ^ b))) + X[(1 + 5*i) & 15]; \
} else { \
if (i < 48) a += (b ^ c ^ d) + X[(5 + 3*i) & 15]; \
else a += (c ^ (b | ~d)) + X[( 7*i) & 15]; \
} \
a = b + (a << t | a >> (32 - t)); \
} while (0)
static
void
body
(
uint32_t
ABCD
[
4
],
uint32_t
X
[
16
])
{
int
t
;
int
i
av_unused
;
unsigned
int
a
=
ABCD
[
3
];
unsigned
int
b
=
ABCD
[
2
];
unsigned
int
c
=
ABCD
[
1
];
unsigned
int
d
=
ABCD
[
0
];
unsigned
int
a
=
ABCD
[
3
];
unsigned
int
b
=
ABCD
[
2
];
unsigned
int
c
=
ABCD
[
1
];
unsigned
int
d
=
ABCD
[
0
];
#if HAVE_BIGENDIAN
for
(
i
=
0
;
i
<
16
;
i
++
)
X
[
i
]
=
av_bswap32
(
X
[
i
]);
for
(
i
=
0
;
i
<
16
;
i
++
)
X
[
i
]
=
av_bswap32
(
X
[
i
]);
#endif
#if CONFIG_SMALL
for
(
i
=
0
;
i
<
64
;
i
++
){
CORE
(
i
,
a
,
b
,
c
,
d
)
t
=
d
;
d
=
c
;
c
=
b
;
b
=
a
;
a
=
t
;
for
(
i
=
0
;
i
<
64
;
i
++
)
{
CORE
(
i
,
a
,
b
,
c
,
d
);
t
=
d
;
d
=
c
;
c
=
b
;
b
=
a
;
a
=
t
;
}
#else
#define CORE2(i) CORE(i,a,b,c,d) CORE((i+1),d,a,b,c) CORE((i+2),c,d,a,b) CORE((i+3),b,c,d,a)
#define CORE4(i) CORE2(i) CORE2((i+4)) CORE2((i+8)) CORE2((i+12))
CORE4
(
0
)
CORE4
(
16
)
CORE4
(
32
)
CORE4
(
48
)
#define CORE2(i) \
CORE( i, a,b,c,d); CORE((i+1),d,a,b,c); \
CORE((i+2),c,d,a,b); CORE((i+3),b,c,d,a)
#define CORE4(i) CORE2(i); CORE2((i+4)); CORE2((i+8)); CORE2((i+12))
CORE4
(
0
);
CORE4
(
16
);
CORE4
(
32
);
CORE4
(
48
);
#endif
ABCD
[
0
]
+=
d
;
...
...
@@ -116,8 +123,9 @@ CORE4(0) CORE4(16) CORE4(32) CORE4(48)
ABCD
[
3
]
+=
a
;
}
void
av_md5_init
(
AVMD5
*
ctx
){
ctx
->
len
=
0
;
void
av_md5_init
(
AVMD5
*
ctx
)
{
ctx
->
len
=
0
;
ctx
->
ABCD
[
0
]
=
0x10325476
;
ctx
->
ABCD
[
1
]
=
0x98badcfe
;
...
...
@@ -125,41 +133,44 @@ void av_md5_init(AVMD5 *ctx){
ctx
->
ABCD
[
3
]
=
0x67452301
;
}
void
av_md5_update
(
AVMD5
*
ctx
,
const
uint8_t
*
src
,
const
int
len
){
void
av_md5_update
(
AVMD5
*
ctx
,
const
uint8_t
*
src
,
const
int
len
)
{
int
i
,
j
;
j
=
ctx
->
len
&
63
;
j
=
ctx
->
len
&
63
;
ctx
->
len
+=
len
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
ctx
->
block
[
j
++
]
=
src
[
i
];
if
(
64
==
j
)
{
body
(
ctx
->
ABCD
,
(
uint32_t
*
)
ctx
->
block
);
if
(
j
==
64
)
{
body
(
ctx
->
ABCD
,
(
uint32_t
*
)
ctx
->
block
);
j
=
0
;
}
}
}
void
av_md5_final
(
AVMD5
*
ctx
,
uint8_t
*
dst
){
void
av_md5_final
(
AVMD5
*
ctx
,
uint8_t
*
dst
)
{
int
i
;
uint64_t
finalcount
=
av_le2ne64
(
ctx
->
len
<<
3
);
uint64_t
finalcount
=
av_le2ne64
(
ctx
->
len
<<
3
);
av_md5_update
(
ctx
,
"
\200
"
,
1
);
while
((
ctx
->
len
&
63
)
!=
56
)
while
((
ctx
->
len
&
63
)
!=
56
)
av_md5_update
(
ctx
,
""
,
1
);
av_md5_update
(
ctx
,
(
uint8_t
*
)
&
finalcount
,
8
);
av_md5_update
(
ctx
,
(
uint8_t
*
)
&
finalcount
,
8
);
for
(
i
=
0
;
i
<
4
;
i
++
)
AV_WL32
(
dst
+
4
*
i
,
ctx
->
ABCD
[
3
-
i
]);
for
(
i
=
0
;
i
<
4
;
i
++
)
AV_WL32
(
dst
+
4
*
i
,
ctx
->
ABCD
[
3
-
i
]);
}
void
av_md5_sum
(
uint8_t
*
dst
,
const
uint8_t
*
src
,
const
int
len
){
AVMD5
ctx
[
1
];
void
av_md5_sum
(
uint8_t
*
dst
,
const
uint8_t
*
src
,
const
int
len
)
{
AVMD5
ctx
;
av_md5_init
(
ctx
);
av_md5_update
(
ctx
,
src
,
len
);
av_md5_final
(
ctx
,
dst
);
av_md5_init
(
&
ctx
);
av_md5_update
(
&
ctx
,
src
,
len
);
av_md5_final
(
&
ctx
,
dst
);
}
#ifdef TEST
...
...
@@ -179,12 +190,14 @@ int main(void){
int
i
;
uint8_t
in
[
1000
];
for
(
i
=
0
;
i
<
1000
;
i
++
)
in
[
i
]
=
i
*
i
;
for
(
i
=
0
;
i
<
1000
;
i
++
)
in
[
i
]
=
i
*
i
;
av_md5_sum
(
md5val
,
in
,
1000
);
print_md5
(
md5val
);
av_md5_sum
(
md5val
,
in
,
63
);
print_md5
(
md5val
);
av_md5_sum
(
md5val
,
in
,
64
);
print_md5
(
md5val
);
av_md5_sum
(
md5val
,
in
,
65
);
print_md5
(
md5val
);
for
(
i
=
0
;
i
<
1000
;
i
++
)
in
[
i
]
=
i
%
127
;
for
(
i
=
0
;
i
<
1000
;
i
++
)
in
[
i
]
=
i
%
127
;
av_md5_sum
(
md5val
,
in
,
999
);
print_md5
(
md5val
);
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录