<老张>
普通会员
发贴: 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_CTX md5;
volatile int i;
unsigned char b[20];
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[3]} ";
好象很多人不知道啊。
<---- 以上言论仅代表本人立场 ---->
__________________
你要想明白,
我喝的比较多!
<老张>
普通会员
发贴: 459
积分: 0
来自:
注册日期: 2006-05-15
发表时间: 2006-11-27 17:50:44
--------------------------------------------------------------------------------
希望大家多发布小知识点,让新人少走弯路。
<---- 以上言论仅代表本人立场 ---->
__________________
你要想明白,
我喝的比较多! |