AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.09.2004, 18:36   #1  
Lihgt is offline
Lihgt
Участник
 
48 / 70 (3) ++++
Регистрация: 16.04.2002
Адрес: Москва
Функция похожая на buildPassword
Один мой знакомый написал функцию, которая выполняет операцию аналогичную аксаптовской bildPassword.
Очень пригодилась для коннекта с терминалов с аксаптовским логином и паролем.
PHP код:
function Str2Int(_Str String) : Integer;
var
  
tmpCode Int64;
  
tmpChar Integer;
  
i       Integer;
begin
  _Str 
:= AnsiLowerCase(_Str);
  
tmpCode := $015A4E35;
  
:= 1;
  While 
<= Length(_Str) Do
  
Begin
    tmpChar 
:= Ord(_Str[i]) and $0FF;

    
tmpCode := tmpCode and $FFFFFFFF;
    
tmpCode := ((tmpCode shl 13) and $0FFFFE000) +
               ((
tmpCode shr 19) and $000001FFF);
    
tmpCode := tmpCode xor ((tmpChar shl 5) and $01FE0);
    
tmpCode := (tmpCode xor tmpChar) + 3;
    
Inc(i);
  
End;

  
Result := tmpCode and $FFFFFFFF;
end;

function 
Int2Code(intCode Integer) : String;
var
  
tmpCode Int64;
  
tmpByte Shortint;
  
Code    String;
  
i       Integer;
begin
  tmpCode 
:= intCode and $FFFFFFFF;
  
:= 0;
  While 
Do
  
Begin
    tmpByte 
:= tmpCode mod $24;
    If 
tmpByte 10 Then
      Code 
:= Chr(Ord('0') + tmpByte) + Code
    
Else
      
Code := Chr(Ord('A') + tmpByte 10) + Code;

    
tmpCode := (tmpCode * $38E38E39shr 3;
    
tmpCode := (tmpCode and $FFFFFFFF00000000shr 32;
    
Inc(i);
  
End;

  
Result := Code;
end;

function 
CryptUserPass(Password PCharUser PChar) : PCharstdcall;
var
  
Code     String;
  
tmpCode  Integer;
  
tmpConst Integer;
begin
  tmpConst 
:= $A59C29F1;

  
tmpCode  := Str2Int(String(User) + String(Password)) xor tmpConst;
  
Code := Int2Code(tmpCode);

  
tmpConst := ($928379A1 tmpCode) and $FFFFFFFF;

  
tmpCode := Str2Int(String(Password)) xor tmpConst;
  
Code := Code Int2Code(tmpCode);

  
Result := PChar(Code);
end
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Функция поиска подстроки, чувствительная к регистру . Есть ли такая в аксапте? ATimTim DAX: Программирование 4 13.02.2006 15:37
Функция возвращающая количество месяцев нужна, никто не видел?.. MironovI DAX: Программирование 3 29.09.2005 12:05
Функция, которая убирает перевод каретки в строке. NJD DAX: Программирование 19 27.07.2004 15:28
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09
Функция RunBuf Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:15
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:35.