实时搜索: md5码怎么用

md5码怎么用

622条评论 1088人喜欢 4012次阅读 544人点赞
就是下载界面的那个,说是官方下载器md5码,什么意思?还有md5验证工具 , rt , 要尽可能的简单,不要用宏。代码要有详细的解释。做好了请将源文件发到110775774@163.com。谢谢。
OK,换个简单的。用一个有16个元素的UINT型数组模拟信息的一个分组(包括填充后),即空字符串可模拟为{128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},那么,字符串“a”可模拟成什么?“abc”呢?假如信息字节(Byte)长度用64求模后为57,这种情况下又该怎样填充? , 如何解决这个问题? , 来自迅雷的下载请求基本上超过了网站正常流量的几倍,有什么技术可以防止...

激战2md5码有什么用: 下载完游戏后可以通过MD5验证游戏是否完整,避免进不了游戏,出现错误,基本下载完游戏后可以无视这个环节。

md5会有重复的可能吗: 一般认为任何一个字符串都有一个对应的md5加密串的确这样. md5算法对输入串的形式没有要求.
如果将26个英文字母组合成32位字符串显然不是只有32位串才能被md5加密. 所以这么比较无意义.

事实上有可数无穷多个字符串可以被md5加密, 所以自然会有重复, 但这不叫"不够用". 因为大多数使用情形下, 有重复不会带来很大问题, md5不是用完就没了的。。。

java请问2次调用获取系统时间的方法,理论上有可能一样吗,我要用来生成md5码: 楼上两位都说不可能一样,我刚才试了一下,输出的2次毫秒数是一模一样的,程序执行时间是很微小的时间段,几乎可以忽略

求生成MD5码的c或c++代码: 自己用C语言写的简单的MD5算法实现。

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>

typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef UINT MD5_SUB_ARRAY[16];
typedef UINT MD5_TRANSORM_FUNC(UINT,UINT,UINT);
typedef struct
{
UINT a;
UINT b;
UINT c;
UINT d;
MD5_SUB_ARRAY sub_array;
}MD5_TRANSFORM_PARAM;

const double MAX_INT = (double)0xFFFFFFFF + 1.0;

const UINT MD5_TRANSFORM_MATRIX[4][16][3] =
{

{
{ 0, 7, 1}, { 1,12, 2}, { 2,17, 3}, { 3,22, 4},
{ 4, 7, 5}, { 5,12, 6}, { 6,17, 7}, { 7,22, 8},
{ 8, 7, 9}, { 9,12,10}, {10,17,11}, {11,22,12},
{12, 7,13}, {13,12,14}, {14,17,15}, {15,22,16},
},

{
{ 1, 5,17}, { 6, 9,18}, {11,14,19}, { 0,20,20},
{ 5, 5,21}, {10, 9,22}, {15,14,23}, { 4,20,24},
{ 9, 5,25}, {14, 9,26}, { 3,14,27}, { 8,20,28},
{13, 5,29}, { 2, 9,30}, { 7,14,31}, {12,20,32},
},

{
{5, 4, 33}, { 8,11,34}, {11,16,35},{14, 23,36},
{1, 4, 37}, { 4,11,38}, { 7,16,39},{10, 23,40},
{13,4, 41}, { 0,11,42}, { 3,16,43},{ 6, 23,44},
{9, 4, 45}, {12,11,46}, {15,16,47},{ 2, 23,48},
},

{
{ 0,6,49}, { 7,10,50}, {14,15,51},{ 5, 21,52},
{12,6,53}, { 3,10,54}, {10,15,55},{ 1, 21,56},
{ 8,6,57}, {15,10,58}, { 6,15,59},{13, 21,60},
{ 4,6,61}, {11,10,62}, { 2,15,63},{ 9, 21,64},
},
};

static UINT MD5_TRANSFORM_ARRAY[65];

void MD5_Init()
{
int x;
for(x = 1; x <= 64; x++)
{
MD5_TRANSFORM_ARRAY[x] = (UINT)(MAX_INT * fabs(sin(x)));
}
}

UINT F(UINT x,UINT y,UINT z)
{
return ((x & y) | ((~x) & z));
}

UINT G(UINT x,UINT y,UINT z)
{
return ((x & z) | (y & (~z)));
}

UINT H(UINT x,UINT y,UINT z)
{
return (x ^ y ^ z);
}

UINT I(UINT x,UINT y,UINT z)
{
return (y ^ (x | (~z)));
}

BYTE* MD5_prepare_data(const BYTE* data,int len,int* new_len)
{
int rest,fill,size;
BYTE* new_data;
UINT bit_len;

// (1) 字节补齐
rest = len % 56;
if (rest <= 56) fill = 56 - rest;
else fill = (64 - rest) + 56;

new_data = (BYTE*)malloc(len + fill + 8);
if (NULL == new_data) return NULL;

if (len > 0) memcpy(new_data,data,len);
if (fill > 0) memset(new_data + len,0x80,1);
if (fill > 1) memset(new_data + len + 1,0,fill - 1);

size = fill + len;

// (2) 附加数据的比特长度
bit_len = len * 8;
// (64位二进制数表示的)比特长度的低32位
memset(new_data + size + 0,(bit_len & 0x000000FF), 1);
memset(new_data + size + 1,(bit_len & 0x0000FF00) >> 8, 1);
memset(new_data + size + 2,(bit_len & 0x00FF0000) >> 16,1);
memset(new_data + size + 3,(bit_len & 0xFF000000) >> 24,1);
// 不考虑比特长度超出32位无符号数表示范围,所以高32位总是0
memset(new_data + size + 4,0,4);

*new_len = size + 8;

return new_data;
}

void MD5_transform(MD5_TRANSFORM_PARAM* param,int ring,MD5_TRANSORM_FUNC func)
{
UINT a,b,c,d,s,k,i;
UINT abcd[4];
UINT *X,*T;
int index;

abcd[0] = param->a;
abcd[1] = param->b;
abcd[2] = param->c;
abcd[3] = param->d;
X = param->sub_array;
T = MD5_TRANSFORM_ARRAY;

for(index = 0; index < 16; index++)
{
a = abcd[(3 * index + 0) % 4];
b = abcd[(3 * index + 1) % 4];
c = abcd[(3 * index + 2) % 4];
d = abcd[(3 * index + 3) % 4];

k = MD5_TRANSFORM_MATRIX[ring][index][0];
s = MD5_TRANSFORM_MATRIX[ring][index][1];
i = MD5_TRANSFORM_MATRIX[ring][index][2];

a = a + func(b,c,d) + X[k] + T[i];
a = ( a << s) | ( a >> (32 - s)); // 循环左移
a = a + b;

abcd[(3 * index + 0) % 4] = a;
}

param->a = abcd[0];
param->b = abcd[1];
param->c = abcd[2];
param->d = abcd[3];
}

int MD5(const BYTE* data,int len)
{
int x,y,new_len;
MD5_TRANSFORM_PARAM param;
UINT AA,BB,CC,DD;
BYTE* buf;

MD5_Init();

buf = MD5_prepare_data(data,len,&new_len);
if (buf == NULL) return -1;

AA = 0x67452301;
BB = 0xefcdab89;
CC = 0x98badcfe;
DD = 0x10325476;

for(x = 0; x < new_len / 64; x++)
{
param.a = AA;
param.b = BB;
param.c = CC;
param.d = DD;

for(y = 0; y < 16; y++)
{
param.sub_array[y] = buf[64 * x + 4 * y + 0];
param.sub_array[y] += buf[64 * x + 4 * y + 1] << 8;
param.sub_array[y] += buf[64 * x + 4 * y + 2] << 16;
param.sub_array[y] += buf[64 * x + 4 * y + 3] << 24;
}
MD5_transform(&param,0,F);
MD5_transform(&param,1,G);
MD5_transform(&param,2,H);
MD5_transform(&param,3,I);

AA += param.a;
BB += param.b;
CC += param.c;
DD += param.d;
}

printf("MD5(\"%s\")=",data);

printf("%02X%02X%02X%02X",
(AA & 0x000000FF),
(AA & 0x0000FF00) >> 8,
(AA & 0x00FF0000) >> 16,
(AA & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(BB & 0x000000FF),
(BB & 0x0000FF00) >> 8,
(BB & 0x00FF0000) >> 16,
(BB & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(CC & 0x000000FF),
(CC & 0x0000FF00) >> 8,
(CC & 0x00FF0000) >> 16,
(CC & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(DD & 0x000000FF),
(DD & 0x0000FF00) >> 8,
(DD & 0x00FF0000) >> 16,
(DD & 0xFF000000) >> 24);

printf("\n");

return 0;
}

int main()
{
MD5("",0);
MD5("a",1);
MD5("abc",3);
MD5("message digest",14);
MD5("abcdefghijklmnopqrstuvwxyz",26);

return 0;
}

请问各位下。。。。为什么一些的MD5 Hashes password 无法解码???: MD5是不可逆的加密算法,本来也不能解,能解的都是根据明文加密后得到的,然后反向去查,比如 a 加密后为 0cc175b9c0f1b6a831c399e269772661 如果 你用 0cc175b9c0f1b6a831c399e269772661 去查的话可以找到a,如果一个很长,很复杂的加密后为 bcc175b9c0f1baa831c399e269772662 那当然没法解密。

复制到U盘的Iso系统文件每次的Md5码不一样,还能用吗: 应该不能用了,有可能是你的U盘质量有问题,copy的时候造成数据丢失,或者是你在copy完数据后没有正常退出USB设备,造成数据缓存没有完全写入USB造成的。

防止迅雷访问网页: 很多网站都遇到了相似的问题,下载量超出了访问量很多,对中小网站来说是一种很大的伤害

总结一下,就是修改资源的名称和其他细节,以达到改变MD5码的作用,从而使自己的资源变成惟一性质的

下面这段话是从网上COPY来的,因为防范的方法大致相同,我就不自己再打一遍了,希望楼主成功防范非法盗链

迅雷原来已经说过,迅雷会把相同的文件集合在一起,供迅雷的用户下载

别给我说你的网站有防盗链,迅雷每一个用户都在尝试连上你的服务器下载,你不断的拒绝,也会占用光你的CPU资源,而做成你的真正用户无法下载和登陆.

那迅雷是通过什么原理,把互联网上的千千万万的文件和下载地址,而分辨出哪些是相同的文件???

是通过MD5码,如果两个相同的文件,就算文件名不相同,但他里面的代码是一样的,也就是MD5码也相同.

给迅雷盗连,是因为除了我们的网站有这个文件,在互联网上,其它网站也有提供这个文件下载.

我们可以对原文件进行些小修改,但又不影响这个文件的实质,如:

电影文件:修改标题和作者

MP3:修改标题和作者

压缩包:在压缩包上加上注解

以上行为,都会改变原文件的MD5码,从而做成,你的文件是整个互联网的唯一(给别人下载后,再发布到其它网站例外,但给迅雷盗链的机会也会大大减少).

防止迅雷盗链的方法

可能大家都只知迅雷下载速度快,但如果相对我们站长(有独立服务器)来说,迅雷是我们最大的盗链敌人.

一.迅雷盗链原理

为什么迅雷会下载速度快?每个用迅雷下载的互联网的下载地址,都会被迅雷服务器收集,然后把相同的文件(通过相同MD5码来判断为同一个文件),集合在一起,形成一个下载资源.
当有用户用迅雷下载电影,MP3等大文件时,迅雷的客户端就会请求服务器,拿到正在下载文件在互联网上的其它下载地址.
所以,当用迅雷下载一些大文件时,就会看到不单有一个下载资源,而是有很多,而相对来说,其它下载资源就是盗链回来的.也所以,迅雷下载的速度快.

二.我的网站有防盗链机制,我不怕?

的确,有独立服务器的站长,基本上都会有防盗链,但如果一个下载地址给迅雷盗链了,就会有几十或几百人来尝试登陆你的下载地址,而如果你的网站上有一百个地址给迅雷收集了,那你每秒钟可能要拒绝几千次的盗链请求.我相信,对你的CPU资源会有很大的占用.再说,太多人同时连上一个端口,也会做成阻塞,你的真正用户就会尝试多次才能连接上你的服务器.

为什么有好些站推荐用迅雷下载

1.迅雷下载的确很快(盗链得来的).网际快车等其它下载工具也有相同的功能,但如果下载地址中有用户名和密码,就不会收集,但迅雷可不同,一视同人,全部收集.我猜,在下载地址中包了用户和密码,就是不想被公开,但写迅雷这个程序的人,用心可不太像人.

2.有好些站长,自身服务器性能差或带宽少或不了解迅雷,想借助迅雷的其它资源的帮助,让用户错觉上感到下载速度飞快.所以,如果你是此类站长,无需再往下看.

三.有何方法可以防迅雷呢?

我们明白了,迅雷是通过MD5码,判断互联网上的哪些下载地址是同一个文件,然后集合在一起,提供给别人下载的.那们我就可以对我们自身网站上的文件进行小修改,让我们的文件和互联网上的不同,变成了唯一.(如果有人在你的网站上下载了一个文件,然后再发布到自己的网站上,那你的文件就会在互联网上多了一个复制.但给迅雷盗连的机会还是会极少的)

四.对本站的文件进行小修改,来改变MD5码

电影(rmvb,AVI等),可以对标题和作者进行修改
MP3,也可以对标题和作者进行修改
这些修改,对能改变一个文件的MD5码,容量大小上也会有几个节字上的变化,经过这些修改,迅雷去见鬼去吧.

迅雷最不是人的地方,就是把有用户名和密码的下载地址也盗.不道理.

易语言写的软件开启时需要输入激活码,第二次开启时就不用输入了。要怎么办?:

.版本 2
.支持库 script
.支持库 eAPI

.程序集 窗口程序集1, , , 为了方便省事,我把注册机也写在一起,自己测试吧
.程序集变量 注册码, 文本型, , , 用于正常软件
.程序集变量 是否注册, 逻辑型, , , 用于正常软件

.子程序 __启动窗口_创建完毕, , , 用于正常软件

编辑框1.内容 = 到文本 (取绝对值 (取硬盘特征字 ()) + 20100714)  ' 20100714 这个你可以自己该数值
注册判断 ()  ' 检查是否注册 赋值给 变量:是否注册
.判断开始 (是否注册 = 真)  ' 这个判断可以用在你想要限制的地方
    _启动窗口.标题 = “软件已注册”
.默认
    _启动窗口.标题 = “软件未注册”
.判断结束


.子程序 注册判断, , , 用于正常软件

脚本组件1.执行 (#md5)
.如果 (注册项是否存在 (3, “Software\mysoft\config”) = 真)
    注册码 = 取文本注册项 (3, “Software\mysoft\config”, )
    .如果 (注册码 = 到大写 (脚本组件1.运行 (“md5”, 编辑框1.内容)))
        是否注册 = 真
    .否则
        是否注册 = 假
    .如果结束

.否则
    是否注册 = 假
.如果结束


.子程序 _注册按钮_被单击, , , 用于正常软件

.如果 (编辑框2.内容 = 注册计算 ())
    信息框 (“注册成功,重新打开软件即可!”, 0, )
    写注册项 (3, “Software\mysoft\config”, 编辑框2.内容)
    销毁 ()
.否则
    信息框 (“注册失败”, 0, )
.如果结束


.子程序 注册计算, 文本型, , 用于正常软件

脚本组件1.执行 (#md5)
返回 (到大写 (脚本组件1.运行 (“md5”, 编辑框1.内容)))

.子程序 _按钮1_被单击, , , 用于注册机

脚本组件1.执行 (#md5)
编辑框4.内容 = 到大写 (脚本组件1.运行 (“md5”, 编辑框3.内容))

 

  • office2016要更新多久

    贩卖冰毒200克以上,300克以下是怎么判刑的:   品种、成分均影响判决;请律师帮助辩护  走私、贩卖、运输、制造毒品罪  第三百四十七条 走私、贩卖、运输、制造毒品,无论数量多少,都应当追究刑事责任,予以刑事处罚。  走私、贩卖、运输、制造毒品,有下列情形之一的...

    327条评论 2631人喜欢 3265次阅读 362人点赞
  • dnf哪些职业需要高强

    这药是一粒50毫克?还是整板50毫克,?规格上写的是50mg,?: 一粒呀 ...

    204条评论 5979人喜欢 6444次阅读 757人点赞
  • 08年奥运会男足谭望嵩踹的谁

    50mg纯洁的U3O8中含有多少个铀原子?有多少个氧原子?: U3O8的摩尔质量为:842.1 g·mol−1则50mg的摩尔数为:0.05/842.1=0.00005937mol铀原子数;6.02*10^23*0.00005937*3=1.072*10^20个铀原子氧原子数:...

    758条评论 2670人喜欢 3387次阅读 744人点赞
  • dota2solo 依然 是谁

    药品每粒50mg,一次吃0.2g,那么一次吃几粒?: 首先要知道:1g=1000mg一次要吃:0.2*1000=200mg也就是:200/50=4粒 ...

    486条评论 5942人喜欢 5686次阅读 531人点赞