Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос на Делфи с Oxygen 
:(
    Опции темы
wanderer1977
Дата 2.7.2012, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.3.2012

Репутация: нет
Всего: нет



Добрый день!
Помогите с переносом кода из Oxygen на Delphi

Есть фрагмент кода на Oxygen (Embarcadero Prism):

Код

 method GenPassword:String;
var
 str1, str2, str1_md5, str2_md5: String;
 str_byte, str1_md5_arr, str2_md5_arr:array of Byte;
 utf8_str:= new UTF8Encoding;
 md5_sum: MD5;  
begin
 md5_sum:=md5.Create;
 md5_sum.Initialize;

 str1:='< Solt1 >';
 str_byte:=UTF8_str.getbytes(str1);
 str1_md5_arr:=md5_sum.ComputeHash(str_byte);
 str1_md5:=utf8_str.GetString(str1_md5_arr);

 str2:='< solt2 >';
 str_byte:=UTF8_str.getbytes(str2);
 str2_md5_arr:=md5_sum.ComputeHash(str_byte);
 str2_md5:=utf8_str.GetString(str2_md5_arr);

 result:=str1_md5+str2_md5;
end;


начал переносить данный метод на Делфи и запутался :( :

Код

function MD5Indy (const Value: String; const aLowerCase: Boolean = False): String;
var
  Hash: TIdHashMessageDigest5;
begin
  Hash:= TIdHashMessageDigest5.Create;
  if aLowerCase then
    Result:= LowerCase(Hash.HashStringAsHex(Value))  // возвращает хеш строчными буквами
  else
    Result:= UpperCase(Hash.HashStringAsHex(Value));  // возвращает хеш заглавными буквами
  FreeAndNil(Hash);
end;


// Кусок генерации пароля
var
 str1, str2,  str2_md5, str1_md5_arr: String;
 str1_byte, str2_md5_arr: SysUtils.TBytes;
 str1_md5:UTF8String;
begin
 str1:='< Solt1 >';
 str1_byte:=TEncoding.UTF8.getbytes(str1); // в этом месте совпадает с результатами Oxygen

 // str1_md5_arr:=md5_sum.ComputeHash(str1_byte);
 str1_md5_arr:=MD5Indy(TEncoding.UTF8.GetString(str1_byte)); // а тут уже нет



Подскажите направление.. Возможно, не так начал реализацию...

Это сообщение отредактировал(а) wanderer1977 - 4.7.2012, 06:50
PM MAIL   Вверх
CynicRus
Дата 5.7.2012, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 2
Всего: 5



md5_sum: MD5;

str1_md5_arr:=md5_sum.ComputeHash(str_byte);  - эти строки ни на что не намекают? Чтобы результаты совпали - надо бы для начала хэш посчитать.


PM MAIL   Вверх
wanderer1977
Дата 5.7.2012, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.3.2012

Репутация: нет
Всего: нет



Цитата(CynicRus @ 5.7.2012,  16:07)
md5_sum: MD5;

str1_md5_arr:=md5_sum.ComputeHash(str_byte);  - эти строки ни на что не намекают? Чтобы результаты совпали - надо бы для начала хэш посчитать.

дык я его и считаю 

Код

str1_md5_arr:=MD5Indy(TEncoding.UTF8.GetString(str1_byte));


Добавлено через 3 минуты и 32 секунды
в итоге щас на делфи 2009 получилось вот что:

Код
function MD5(const Bytes : TBytes) : String;
var
   idmd5 : TIdHashMessageDigest5;
begin
   idmd5 := TIdHashMessageDigest5.Create;
   try
     result :=LowerCase(idmd5.HashBytesAsHex(Bytes));
   finally
     idmd5.Free;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);

var
 str1,str2:String;
 str1_md5,str2_md5:String;
 md5_all: String;
 str1_byte,str2_byte,Str_byte: TBytes;

begin

  str1:='< solt1 >';
  str1_byte:=TEncoding.UTF8.getbytes(str1);
  str1_md5:=MD5(str1_byte);

  str2:='< solt2 >';
  str2_byte:=TEncoding.UTF8.getbytes(str2);
  str2_md5:=MD5(str2_byte);

  md5_all:=(str1_md5+str2_md5);


А дальше полный ступор: не могу понять как сделать кодировку как в Призме. Там на выходе получается строка в кодировке utf8, которая в отладчике выглядет 
Код
0�a�"d���G�e�F%3��ʧ¨�y���

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.