Maincstcs是cst代表什么意思思

MD5加密算法(Java版) 可以运行 原理   对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息且每一分组又被划分为16个32位子分组,经过了一系列的处理后算法的输出由四個32位分组组成,将这四个32位分组级联后将生成一个128位散列值   在MD5算法中,首先需要对信息进行填充使其位长对512求余的结果等于448。因此信息的位长(Bits Length)将被扩展至N*512+448,N为一个非负整数N可以是零。填充的方法如下在信息的后面填充一个1和无数个0,直到满足上面的条件時才停止用0对信息的填充然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求   MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分別为:A=0xB=0xefcdab89,C=0x98badcfeD=0x。   当设置好这四个链接变量后就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目   将上面㈣个链接变量复制到另外四个变量中:A到a,B到bC到c,D到d   主循环有四轮(MD4只有三轮),每轮循环都很相似第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算然后将所得结果加上第四个变量,文本的一个子分组和一个常数再将所得结果向左環移一个不定的数,并加上a、b、c或d中之一最后用该结果取代a、b、c或d中之一。   以一下是每次操作中用到的四个非线性函数(每轮一个)   F(X,Y,Z)   所有这些完成之后,将A、B、C、D分别加上a、b、c、d然后用下一分组数据继续运行算法,最后的输出是A、B、C和D的级联   当你按照我上面所说的方法实现MD5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试看看程序有没有错误。   MD5 ("") = d41d8cd98f00b204e9800998ecf8427e   MD5 ("a") = 以上程序可以在任意一款支持ANSI C的编译器上编译通过 */   /* 直接复制粘贴请删除多余的空格,并调整格式否则可能有编译错误 */   /* 在linux下编译,偠添加链接库命令如:gcc -o md5 md5.c -lm */

  每日打卡10分钟词汇量将突破极限。

  定制的记忆曲线让你轻松进阶。

  精挑细选的词汇配以数千例句和视频。





我要回帖

更多关于 卫长卫cst4 的文章

 

随机推荐