Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

такая dll скомпилированая на VC6 позволяет подключить её к VB6 и использовать функцию по имени

Отправлено бомж 04 декабря 2006 г. 15:40
В ответ на: Не по теме конфы, но мож. кто поможет по экспорту имен функций из Win32 DLL ? (+) отправлено Сидоргек 04 декабря 2006 г. 15:06


//содержимое файла vlib.def
LIBRARY vblib
EXPORTS
calc_apfel_point
//-------------------------------------------
//содержимое файла vlib.cpp
#include "stdafx.h"
#include "tchar.h"
void __declspec(dllexport) __stdcall calc_apfel_point(TCHAR *inp, DWORD inplen, TCHAR* key, DWORD keylen);

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
//Funktion
void __declspec(dllexport) __stdcall calc_apfel_point(TCHAR *inp, DWORD inplen, TCHAR* key = "", DWORD keylen = 0)
{
//we will consider size of sbox 256 bytes
//(extra byte are only to prevent any mishep just in case)
TCHAR Sbox[257], Sbox2[257];
unsigned long i, j, t, x;

//this unsecured key is to be used only when there is no input key from user
static const TCHAR OurUnSecuredKey[] = "www.systweak.com" ;
static const int OurKeyLen = _tcslen(OurUnSecuredKey);
TCHAR temp , k;
i = j = k = t = x = 0;
temp = 0;

//always initialize the arrays with zero
ZeroMemory(Sbox, sizeof(Sbox));
ZeroMemory(Sbox2, sizeof(Sbox2));

//initialize sbox i
for(i = 0; i < 256U; i++)
{
Sbox[i] = (TCHAR)i;
}

j = 0;
//whether user has sent any inpur key
if(keylen)
{
//initialize the sbox2 with user key
for(i = 0; i < 256U ; i++)
{
if(j == keylen)
{
j = 0;
}
Sbox2[i] = key[j++];
}
}
else
{
//initialize the sbox2 with our key
for(i = 0; i < 256U ; i++)
{
if(j == OurKeyLen)
{
j = 0;
}
Sbox2[i] = OurUnSecuredKey[j++];
}
}

j = 0 ; //Initialize j
//scramble sbox1 with sbox2
for(i = 0; i < 256; i++)
{
j = (j + (unsigned long) Sbox[i] + (unsigned long) Sbox2[i]) % 256U ;
temp = Sbox[i];
Sbox[i] = Sbox[j];
Sbox[j] = temp;
}

i = j = 0;
for(x = 0; x < inplen; x++)
{
//increment i
i = (i + 1U) % 256U;
//increment j
j = (j + (unsigned long) Sbox[i]) % 256U;

//Scramble SBox #1 further so encryption routine will
//will repeat itself at great interval
temp = Sbox[i];
Sbox[i] = Sbox[j] ;
Sbox[j] = temp;

//Get ready to create pseudo random byte for encryption key
t = ((unsigned long) Sbox[i] + (unsigned long) Sbox[j]) % 256U ;

//get the random byte
k = Sbox[t];

//xor with the data and done
inp[x] = (inp[x] ^ k);
}
//return(0);
}




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа

Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 654:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru