您当前的位置:首页 > 养生 > 内容

c md5(C语言求文件MD5的函数用法)

对勾函数性质的研究离不开均值不等式,你需要的不是把每个语言都学会,其实用导数也可以研究对勾函数的性质,总结一下就是算术平均数绝对不会小于几何平均数,会一百种平时工作生活用不到也一点用都没有还浪费时间精力,平时做题的时候用导数还是均值定理,js这里面不包括html这种标记性语言,就不能用均值定理了。

C语言求文件MD5的函数用法

#ifndef MD5_H#define MD5_H typedef struct{ unsigned int count; unsigned int state; unsigned char buffer; }MD5_CTX;#define F(x,y,z) ((x & y) | (~x & z))#define G(x,y,z) ((x & z) | (y & ~z))#define H(x,y,z) (x^y^z)#define I(x,y,z) (y ^ (x | ~z))#define ROTATE_LEFT(x,n) ((x 《《 n) | (x 》》 (32-n)))#define FF(a,b,c,d,x,s,ac) \ { \ a += F(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ }#define GG(a,b,c,d,x,s,ac) \ { \ a += G(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ }#define HH(a,b,c,d,x,s,ac) \ { \ a += H(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ }#define II(a,b,c,d,x,s,ac) \ { \ a += I(b,c,d) + x + ac; \ a = ROTATE_LEFT(a,s); \ a += b; \ } void MD5Init(MD5_CTX *context);void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen);void MD5Final(MD5_CTX *context,unsigned char digest);void MD5Transform(unsigned int state,unsigned char block);void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len);void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len); #endif源文件md5.c#include 《memory.h》#include “md5.h“ unsigned char PADDING={0x80,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,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}; void MD5Init(MD5_CTX *context){ context-》count = 0; context-》count = 0; context-》state = 0x67452301; context-》state = 0xEFCDAB89; context-》state = 0x98BADCFE; context-》state = 0x10325476;}void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputlen){ unsigned int i = 0,index = 0,partlen = 0; index = (context-》count 》》 3) & 0x3F; partlen = 64 - index; context-》count += inputlen 《《 3; if(context-》count 《 (inputlen 《《 3)) context-》count++; context-》count += inputlen 》》 29; if(inputlen 》= partlen) { memcpy(&context-》buffer[index],input,partlen); MD5Transform(context-》state,context-》buffer); for(i = partlen;i+64 《= inputlen;i+=64) MD5Transform(context-》state,&input[i]); index = 0; } else { i = 0; } memcpy(&context-》buffer[index],&input[i],inputlen-i);}void MD5Final(MD5_CTX *context,unsigned char digest){ unsigned int index = 0,padlen = 0; unsigned char bits; index = (context-》count 》》 3) & 0x3F; padlen = (index 《 56)?(56-index):(120-index); MD5Encode(bits,context-》count,8); MD5Update(context,PADDING,padlen); MD5Update(context,bits,8); MD5Encode(digest,context-》state,16);}void MD5Encode(unsigned char *output,unsigned int *input,unsigned int len){ unsigned int i = 0,j = 0; while(j 《 len) { output[j] = input[i] & 0xFF; output[j+1] = (input[i] 》》 8) & 0xFF; output[j+2] = (input[i] 》》 16) & 0xFF; output[j+3] = (input[i] 》》 24) & 0xFF; i++; j+=4; }}void MD5Decode(unsigned int *output,unsigned char *input,unsigned int len){ unsigned int i = 0,j = 0; while(j 《 len) { output[i] = (input[j]) | (input[j+1] 《《 8) | (input[j+2] 《《 16) | (input[j+3] 《《 24); i++; j+=4; }}void MD5Transform(unsigned int state,unsigned char block){ unsigned int a = state; unsigned int b = state; unsigned int c = state; unsigned int d = state; unsigned int x; MD5Decode(x,block,64); FF(a, b, c, d, x[ 0], 7, 0xd76aa478); /* 1 */ FF(d, a, b, c, x[ 1], 12, 0xe8c7b756); /* 2 */ FF(c, d, a, b, x[ 2], 17, 0x242070db); /* 3 */ FF(b, c, d, a, x[ 3], 22, 0xc1bdceee); /* 4 */ FF(a, b, c, d, x[ 4], 7, 0xf57c0faf); /* 5 */ FF(d, a, b, c, x[ 5], 12, 0x4787c62a); /* 6 */ FF(c, d, a, b, x[ 6], 17, 0xa8304613); /* 7 */ FF(b, c, d, a, x[ 7], 22, 0xfd469501); /* 8 */ FF(a, b, c, d, x[ 8], 7, 0x698098d8); /* 9 */ FF(d, a, b, c, x[ 9], 12, 0x8b44f7af); /* 10 */ FF(c, d, a, b, x, 17, 0xffff5bb1); /* 11 */ FF(b, c, d, a, x, 22, 0x895cd7be); /* 12 */ FF(a, b, c, d, x, 7, 0x6b901122); /* 13 */ FF(d, a, b, c, x, 12, 0xfd987193); /* 14 */ FF(c, d, a, b, x, 17, 0xa679438e); /* 15 */ FF(b, c, d, a, x, 22, 0x49b40821); /* 16 */

编程语言前五十名排行榜,你会几种,你听说过

不知道问这种问题有什么意义,编程语言这东西并不是会得越多越好,会一百种平时工作生活用不到也一点用都没有还浪费时间精力。我个人当前接触并且实际写过project的语言,注意不是demo,大概有四个吧。pascal,c#,python,js这里面不包括html这种标记性语言,也不包括powershell,bash,这种脚本语言。你学一个语言就要学框架吧,除了C#你只用学习dotnet框架就行了,其他的语言哪个没有四五个流行框架。所以啊,高级语言这东西是汇编和编程思想的高级抽象,你需要的不是把每个语言都学会,而是理解不同类型的语言的相同点和不同点,这样当生活工作中遇到需要使用一个新语言的情况,你甚至就可以一边看着文档一边就拿着新语言coding了。

c语言程序设计教程 第四版 课后答案 (李丽娟).pdf

您要c语言程序设计教程 第四版 课答案 (李丽娟).pdf我已发送请按照步骤进行操作采纳我前进力记评采纳互相帮助c语言程序设计教程 第四版 课后答案 (李丽娟).pdf

对勾函数的的定义性质是什么

对勾函数是一种类似于反比例函数的一般函数。所谓的对勾函数,是形如f(x)=ax+b/x的函数,是一种教材上没有但考试老喜欢考的函数,所以更加要注意和学习。一般的函数图像形似两个中心对称的对勾,故名。当x》0时,f(x)=ax+b/x有最小值(这里为了研究方便,规定a》0,b》0),也就是当x=sqrt(b/a)的时候(sqrt表示求二次方根)。同时它是奇函数,就可以推导出x《0时的性质。令k=sqrt(b/a),那么,增区间:{x|x≤-k}∪{x|x≥k};减区间:{x|-k≤x《0}∪{x|0《x≤k}。由单调区间可见,它的变化趋势是:在y轴左边,增减,在y轴右边,减增,是两个勾。   对勾函数性质的研究离不开均值不等式。说到均值不等式,其实也是根据二次函数得来的。我们都知道,(a-b)2≥0,展开就是a2-2ab+b2≥0,有a2+b2≥2ab,两边同时加上2ab,整理得到(a+b)2≥4ab,同时开根号,就得到了平均值定理的公式:a+b≥2sqrt(ab)。现在把ax+b/x套用这个公式,得到ax+b/x≥2sqrt(axb/x)=2sqrt(ab),这里有个规定:当且仅当ax=b/x时取到最小值,解出x=sqrt(b/a),对应的f(x)=2sqrt(ab)。我们再来看看均值不等式,它也可以写成这样:(a+b)/2≥sqrt(ab),前式大家都知道,是求平均数的公式。那么后面的式子呢?也是平均数的公式,但不同的是,前面的称为算术平均数,而后面的则称为几何平均数,总结一下就是算术平均数绝对不会小于几何平均数。这些知识点也是非常重要的。   其实用导数也可以研究对勾函数的性质。不过首先要会负指数幂的换算,这也很简单,但要熟练掌握。举几个例子:1/x=x-1,4/x2=4x-2。明白了吧,x为分母的时候可以转化成负指数幂。那么就有f(x)=ax+b/x=ax+bx-1,求导方法一样,求的的导函数为a+(-b)x-2,令f’(x)=0,计算得到b=ax2,结果仍然是x=sqrt(b/a),如果需要的话算出f(x)就行了。平时做题的时候用导数还是均值定理,就看你喜欢用那个了。不过注意均值定理最后的讨论,有时ax≠b/x,就不能用均值定理了。   上述研究都是建立在x》0的基础上的,不过对勾函数是奇函数,所以研究出正半轴图像的性质后,自然能补出对称的图像。如果出现平移了的问题(图像不再规则),就先用平移公式或我总结出的平移规律还原以后再研究,这个能力非常重要,一定要多练,争取做到特别熟练的地步。   对勾函数实际是反比例函数的一个延伸,至于它是不是双曲线还众说不一。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 富文本编辑器(富文本编辑器)

下一篇: 液晶屏幕闪烁(tcl液晶电视屏幕闪烁是什么原因导致的)



猜你感兴趣

推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号