开开 发表于 2009-7-30 17:22

[精华] [固顶] 你知道吗?

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-13 14:50:48

--------------------------------------------------------------------------------
CommandLineToArgvW 函数负责分析命令行参数
CryptCreateHash , CryptGetHashParam , CryptHashData 这3个函数可以用来计算md5或者其他的散列值

<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-13 14:53:31

--------------------------------------------------------------------------------
URLDownloadToFile 可以从网络上下载文件
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-13 14:59:03

--------------------------------------------------------------------------------

你可以自己指定可执行程序的入口函数.
正常 windows 程序入口的定义是

BOOL APIENTRY entry ( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) ;

<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-13 15:11:53

--------------------------------------------------------------------------------
函数调用中的参数传递有3种协议.
c
pascal
fastcall
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

swordlea

版主

发贴: 652
积分: 0
来自: 论坛神游夜
注册日期: 2006-05-16
发表时间: 2006-11-13 21:58:05

--------------------------------------------------------------------------------


<老张> 提到:
CommandLineToArgvW 函数负责分析命令行参数
CryptCreateHash , CryptGetHashParam , CryptHashData 这3个函数可以用来计算md5或者其他的散列值



据童志A1200(明) 介绍Crypt系列函数计算散列效率奇高,大约为自己实现的5 ~ ∞倍。
<---- 以上言论仅代表本人立场 ---->



__________________
- Is life always this hard,or it just when you're a kid?
- Always like this.
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-14 10:30:08

--------------------------------------------------------------------------------


swordlea 提到:


<老张> 提到:
CommandLineToArgvW 函数负责分析命令行参数
CryptCreateHash , CryptGetHashParam , CryptHashData 这3个函数可以用来计算md5或者其他的散列值



据童志A1200(明) 介绍Crypt系列函数计算散列效率奇高,大约为自己实现的5 ~ ∞倍。



根据我的测试 Crypt系列函数计算散列效率比自己实现的要差 3.5 倍 ;
在我的机器上,对下面的测试字符串
unsigned char buf[] = "lasdjsl;fgasdhgasklhfgkahsfklasdhf";
进行
const int times = 10000000;
次散列计算测试 , 自己实现的md5用了 6 秒 .
Crypt api 用了 21 秒
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

swordlea

版主

发贴: 652
积分: 0
来自: 论坛神游夜
注册日期: 2006-05-16
发表时间: 2006-11-14 10:32:54

--------------------------------------------------------------------------------
看来与测试内容有关,或者与测试平台有关,或者与测试者人品有关。
<---- 以上言论仅代表本人立场 ---->



__________________
- Is life always this hard,or it just when you're a kid?
- Always like this.
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-14 10:33:18

--------------------------------------------------------------------------------



// md5test.cpp : 定义控制台应用程序的入口点。
// 测试代码 时间可以在 任务管理器中观察 .
// 另 crypt 的调用首先要生成 秘钥集 . 本代码中没写

#include "stdafx.h"
#include "md5.h"
#include <windows.h>
#include <wincrypt.h>   

unsigned char buf[] = "lasdjsl;fgasdhgasklhfgkahsfklasdhf";

int main()
{
        MD5_CTXmd5;
        volatile int i;
        unsigned char b;
        const int times = 10000000;

        for(i=0;i<times;i++)
        {
                MD5Init (&md5);
                MD5Update (&md5,buf,sizeof(buf));
                MD5Final (b,&md5);
        }
        puts("ok");
        getchar();


        HCRYPTPROV   hProv   = 0;
        HCRYPTHASH   hHash   = 0;
        DWORD      dwHashLen = 20;

        CryptAcquireContext(&hProv,   0,   NULL,   PROV_RSA_FULL,   0 );
        for(i=0;i<times;i++)
        {
                //   Create   a   hash   object.   
                CryptCreateHash(hProv,   CALG_MD5,   0,   0,   &hHash);

                //   Put   the   hash   in   buffer.   
                CryptHashData(hHash,   buf,   sizeof(buf) ,   0);

                //   Read   the   hash   value.   
                CryptGetHashParam(hHash,   HP_HASHVAL, b ,   &dwHashLen, 0);

                CryptDestroyHash(hHash);
        }

        CryptReleaseContext(hProv,0);

        puts("ok api");
        getchar();

        return 0;
}





此贴由<老张>在 2006-11-14 10:34 编辑过。
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-14 10:44:19

--------------------------------------------------------------------------------
根据我的经验.
童童的测试可能和 秘钥集 有关.导致出错误.
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

swordlea

版主

发贴: 652
积分: 0
来自: 论坛神游夜
注册日期: 2006-05-16
发表时间: 2006-11-14 10:44:37

--------------------------------------------------------------------------------
看起来与测试代码无关。
<---- 以上言论仅代表本人立场 ---->



__________________
- Is life always this hard,or it just when you're a kid?
- Always like this.
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-14 14:38:25

--------------------------------------------------------------------------------
更新测试结果
我们自己的代码在进行 小数据量 运算时 ,速度快.
ms 提供的 api 在进行 大数据量运算时 速度快.约为我们的 2 倍 .
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-14 14:45:06

--------------------------------------------------------------------------------
ms 为 原子操作 提供了下面的 函数支持
InterlockedCompareExchange
InterlockedExchangeAdd
......
等.
可以用 "原子操作" 做关键字 来进行 检索.获得相关知识.
这些函数适合做 , api hook 时函数的 替换 , 和 多线程开发中 数据 的 安全访问 .
很多人喜欢用
cli
mov .. . .. .
sti
来工作,这是错误的,因为这些指令不是原子操作 , 应该使用 操作系统 提供的 原子操作
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-27 17:49:37

--------------------------------------------------------------------------------
php 中 字符串 的一些 知识

$name = "123"
$test = " asd $name " ;
echo $test ;

结果为 asd 123

复杂的串 是这样写的

$test = " asdkfj ${name} ";

好象很多人不知道啊。
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!
   

<老张>

普通会员

发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-27 17:50:44

--------------------------------------------------------------------------------
希望大家多发布小知识点,让新人少走弯路。
<---- 以上言论仅代表本人立场 ---->



__________________
你要想明白,
我喝的比较多!

斑马王子 发表于 2009-7-31 17:01

本版 BZ 实在太NB 了版面上放眼望去全是 0/XX的帖子还能孜孜不倦的发   PFPF

斑马王子 发表于 2009-7-31 17:02

本贴亮点:
1<老张>
2你要想明白,
    我喝的比较多!

安天.俺田 发表于 2009-7-31 22:31

晕,原来题目叫精华固定

Dibadabadu 发表于 2009-8-1 00:33

负责折腾的同学辛苦了~
页: [1]
查看完整版本: [精华] [固顶] 你知道吗?