Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Перенести код из Delphi в c# .net 2.0.

Если не можете собрать код - лучше не писать.

uses SysUtils, Classes, Wcrypt2;

...

function EncodeStr(inText:string): string;

var

  Hash: HCRYPTHASH;

  Key: HCRYPTKEY;

  BufLen, DataLen: DWORD;

  Str: String;

  I: Integer;

begin

  CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);

  Stream:=TMemoryStream.Create;

  try

    CryptCreateHash(Prov,CALG_SHA,0,0,@Hash);

    CryptHashData(Hash,PByte(Password),Length(Password),0);

    CryptDeriveKey(Prov,CALG_RC2,Hash,0,@Key);

    Stream.Clear;

    Stream.WriteBuffer(Pointer(inText)^,Length(inText));

    DataLen:=Length(inText);

    BufLen:=Length(inText);

    CryptEncrypt(Key,0,true,0,nil,@BufLen,0);

    Stream.SetSize(BufLen);

    CryptEncrypt(Key,0,true,0,PByte(Stream.Memory),@DataLen,BufLen);

    SetLength(Str,BufLen);

    Stream.Seek(0,soFromBeginning);

    Stream.ReadBuffer(Pointer(Str)^,BufLen);

    Result:=Str;

    CryptDestroyKey(Key);

    CryptDestroyHash(Hash);

  finally

    Stream.Free;

    CryptReleaseContext(Prov,0);

  end;

end;

function DecodeStr(inText:string): string;

var

  Hash: HCRYPTHASH;

  Key: HCRYPTKEY;

  DataLen: DWORD;

  Str: String;

begin

  CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);

  Stream:=TMemoryStream.Create;

  try

    CryptAcquireContext(@Prov,nil,nil,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);

    CryptCreateHash(Prov,CALG_SHA,0,0,@Hash);

    CryptHashData(Hash,PByte(Password),Length(Password),0);

    CryptDeriveKey(Prov,CALG_RC2,Hash,0,@Key);

    DataLen:=Length(inText);

    Str := Copy(inText, 0, DataLen);

    CryptDecrypt(Key,0,true,0,PByte(Str),@DataLen);

    Result := Copy(Str, 0, DataLen);

    CryptDestroyKey(Key);

    CryptDestroyHash(Hash);

  finally

    Stream.Free;

    CryptReleaseContext(Prov,0);

  end;

end;Для проверки кода можно использовать 

const

  Password: String = '1234567890';Кодировка EncodeStr('1') = '®э_ѓ°Ќ°0'

На вход методов в c# подаётся строка.

6 лет назад
AITK
Иван 
41 год
18 лет в сервисе
Был
3 года назад

Выбранный исполнитель

BDEsoft
44 года
18 лет в сервисе
Был
год назад
6 лет назад
$10
1 день
Быстро, без лишних вопросов, всё как я просил.
Хороший заказчик. Четкое ТЗ, быстрая оплата. Рекомендую к сотрудничеству.

Заявки фрилансеров

BDEsoft
44 года
18 лет в сервисе
Был
год назад
6 лет назад