PDA

View Full Version : تبدیل کد به جاوا



sara.ghavam
یک شنبه 14 آذر 1395, 14:39 عصر
سلام دوستان من یک الگوریتم رمز نگاری پیدا کردم که به زبان دلفی نوشته شده میخوام اون رو به جاوا تبدیلش کنم اما چند تا سوال برام پیش اومده

یکی اینکه آیا کسی میتونه در این زمینه کمکم کنه؟

این دو خط رو اصلا متوجه نمیشم

کسی میتونه کمکم کنه که این کدهارو یه جاوا تبدیلش کنم؟
RStr :RawByteString;
RStrB :TBytes Absolute RStr;






const CKEY1 = 5376171757175; CKEY2 = 3261871757175;



function EncryptStr(const S :WideString; Key: LongInt): String;
var i :Integer;
RStr :RawByteString;
RStrB :TBytes Absolute RStr;
begin
Result:= '';
RStr:= UTF8Encode(S);
for i := 0 to Length(RStr)-1 do
begin
RStrB[i] := RStrB[i] xor (Key shr 8);
Key := (RStrB[i] + Key) * CKEY1 + CKEY2;
end;
for i := 0 to Length(RStr)-1 do
begin
Result:= Result + IntToHex(RStrB[i], 2);
end;
end;


function DecryptStr(const S: String; Key: LongInt): String;
var i, tmpKey :Integer;
RStr :RawByteString;
RStrB :TBytes Absolute RStr;
tmpStr :string;
begin
tmpStr:= UpperCase(S);
SetLength(RStr, Length(tmpStr) div 2);
i:= 1;
try
while (i < Length(tmpStr)) do
begin
RStrB[i div 2]:= StrToInt('$' + tmpStr[i] + tmpStr[i+1]);
Inc(i, 2);
end;
except
Result:= '';
Exit;
end;
for i := 0 to Length(RStr)-1 do
begin
tmpKey:= RStrB[i];
RStrB[i] := RStrB[i] xor (Key shr 8);
Key := (tmpKey + Key) * CKEY1 + CKEY2;
end;
Result:= UTF8Decode(RStr);
end;

Valadi
یک شنبه 14 آذر 1395, 21:28 عصر
با سلام
خوب تبديل به dll كن و بعد در جاوا استفاده كن
اين هم نحوه فراخواني dll در جاوا (http://stackoverflow.com/questions/25454697/how-to-call-a-method-in-dll-in-a-java-program)

sara.ghavam
دوشنبه 15 آذر 1395, 15:50 عصر
با سلام
خوب تبديل به dll كن و بعد در جاوا استفاده كن
اين هم نحوه فراخواني dll در جاوا (http://stackoverflow.com/questions/25454697/how-to-call-a-method-in-dll-in-a-java-program)


سلام
دوست عزیزم من این صفحه رو کامل خوندم البته خودمم خیلی جستجو کردم، اما نتونستم اجراش کنم
من الان فایل DLL رو ساختم اما نمیدونم که در جاوا چه کار باید انجام بدم؟ نیاز به توضیح بیشتری در این صفحه ای که برام فرستادید دارم.

من میخوام این DLL رو توی جاوا وارد کنم و برای Android Studio مورد استفاده قرار بدم.

در ضمن کتابخانه JNA رو هم دانلود کردم و به پروژه اضافه کردم.

میشه لطف کنی و کمکم کنی؟؟

Mask
سه شنبه 16 آذر 1395, 03:45 صبح
dll که به درد اندروید نمیخوره برادر.
اقای ولدی برای جاوای نسخه دسکتاپ پیشنهاد دادند.
برای اندروید باید خوده کدرو تبدیل کنید.

Mahmood_M
سه شنبه 16 آذر 1395, 11:23 صبح
این دو خط رو اصلا متوجه نمیشم

کسی میتونه کمکم کنه که این کدهارو یه جاوا تبدیلش کنم؟

RStr :RawByteString;
RStrB :TBytes Absolute RStr;
نوع RawByteString یک String هست که Encode نشده و می تونید از نوع String استفاده کنید
نوع TBytes یک آرایه از Byte هستش، عبارت Absolute به این معنیه که متغیر RStrB مقادیرش رو از فضای متغیر RStr می گیره، یعنی RStrB همواره برابر آرایه ای از بایتهای متغیر RStr هستش
در جاوا برای RStr می تونید از String استفاده کنید و برای RStrB هم از آرایه ای از byte ، مثال :


String RStr = "Mahmood";
byte[] RStrB = RStr.getBytes(Charset.forName("UTF-8"));

تا جایی که من اطلاع دارم، معادل عبارت Absolute در جاوا وجود نداره، زمانی که روی RStrB عملیاتی انجام میشه باید قبلش به صورت بالا Byte ها رو بخونید و در آخر هم بایتها رو به String برگردونید
برای برگشت به String و Encode کردن String به UTF8 در جاوا هم می تونید به این صورت عمل کنید :

String S = new String(RStrB, Charset.forName("UTF-8"));
باقی قسمتها هم تقریبا مشخص هستن