PDA

View Full Version : مبتدی: توضيح دادن يك كد براي رمزگذاري و رمزگشايي رشته ها



parselearn
شنبه 12 دی 1388, 21:09 عصر
از دوستان كسي ميتونه اين كد و برام توضيح بده



Dim Code As String = "abcdefghijk"

Public Function Translate(ByVal TT As String) As String
Dim I As Integer
Dim location As Integer
Translate = ""
For I% = 1 To Len(TT$)
location% = (I% Mod Len(Code$)) + 1
Translate$ = Translate$ + Chr(Asc(Mid$(TT$, I%, 1)) Xor Asc(Mid$(Code$, location%, 1)))
Next I%
End Function

xxxxx_xxxxx
یک شنبه 13 دی 1388, 02:55 صبح
سلام،
کد اسکی هر کاراکتر با کد اسکی کاراکتر بعد از خودش XOR میشه.

xor یک عملگر منطقی مثل And و or هست که روی بیت های یک کاراکتر اعمال میشه.
برای مثال حرف a با b میخواد xor شه. ابتدا تبدیل به کداسکی میشه که به ترتیب 97 و 98 هستند و بعد باینری:
97 = 1100001
98 = 1100010
حالا xor به این صورت محاسبه میشه، بیتهای متناظر اگر مخالف هم باشند خروجی 1 میشه و اگر برابر باشند خروجی 0 میشه. در نهایت حاصل xor عدد 97 با 98 میشه: 0000011 که نشون دهنده عدد 3 در مبنای ده هست.
در آخر، کاراکتر این کد به خروجی الگوریتم اضافه میشه.

برای اینکه عملکرد یک الگوریتم رو بهتر متوجه شید اون رو به بخش های کوچکتر تقسیم کنید، مثلاً برای الگوریتم بالا:


Private Function Translate(ByVal TT As String) As String
Dim I As Integer
Dim location As Integer
Translate = ""
For I% = 1 To Len(TT$)
location% = (I% Mod Len(Code$)) + 1
y = Mid$(TT$, I%, 1)
z = Mid$(Code$, location%, 1)
a = Asc(y)
b = Asc(z)
c = a Xor b
x = Chr(c)
Translate$ = Translate$ + x
Next I%
End Function