Всем привет Я бы хотел узнать как декоднуть хеш при инвайтинге в группу ВКонтакте. Я даже предствления не имею, как это все реализовать. Помогите нубу
Code: function decode(s:string) :string; var hash:string; begin hash:=''; hash:=hash+s[17]; hash:=hash+s[16]; hash:=hash+s[15]; hash:=hash+s[14]; hash:=hash+s[13]; hash:=hash+s[12]; hash:=hash+s[11]; hash:=hash+s[10]; hash:=hash+s[9]; hash:=hash+s[8]; hash:=hash+s[7]; hash:=hash+s[6]; hash:=hash+s[5]; hash:=hash+s[25]; hash:=hash+s[24]; hash:=hash+s[23]; hash:=hash+s[22]; hash:=hash+s[21]; result:=hash; end;
Code: [I][COLOR=yellow]// ---- Раскодировка хэша ----[/I][/COLOR] [b][b]function[/b][/b] TidVKClient.DecodeHash([b]const[/b] Hash : [b]string[/b]) : [b]string[/b]; [b]var[/b] Decchas : [b]string[/b]; str : [b]string[/b]; I : Integer; Len : integer; [b]begin[/b] str := Copy(Hash, 6, 12); Len := Length(str); [I][COLOR=yellow]// Я знаю, по-идиотски, но умнее было влом придумывать(([/I][/COLOR] [b]For[/b] I := 0 [b]To[/b] Length(str) -1 [b]do[/b] [b]begin[/b] Decchas := Decchas + str[len]; Inc(len, -1); [b]end[/b]; str := Copy(Hash, 21, Length(Hash) -5); str := str + Copy(Hash, 5, 1); Len := Length(str); [b]For[/b] I := 0 [b]To[/b] Length(str) -1 [b]do[/b] [b]begin[/b] Decchas := Decchas + str[len]; Inc(len, -1); [b]end[/b]; Result := Decchas; [b]end[/b]; [I][COLOR=yellow]{ ***************************************************************************** }[/I][/COLOR] [I][COLOR=yellow]// ---- Раскодировка хэша стены ----[/I][/COLOR] [b]function[/b] TidVKClient.DecodeWallHash([b]const[/b] ASourceHash: [b]string[/b]): [b]string[/b]; [b]var[/b] tmp : [b]string[/b]; str : [b]string[/b]; I : Integer; Len : Integer; [b]begin[/b] tmp := ASourceHash; tmp := Copy(tmp, 5, 27); Len := Length(tmp); [b]For[/b] I := 0 [b]To[/b] Length(Tmp) -1 [b]do[/b] [b]begin[/b] str := str + tmp[len]; Inc(len, -1); [b]end[/b]; tmp := ASourceHash; tmp := Copy(tmp, 35, 5); Len := Length(Tmp); [b]For[/b] I := 0 [b]To[/b] Length(tmp) -1 [b]do[/b] [b]begin[/b] str := str + tmp[len]; Inc(len, -1); [b]end[/b]; Result := str; [b]end[/b]; для инвайта юзай первую функцию)) )
А сам? Hash: Code: 827726fa416a20fca19381b33 Отсекаеться: Code: [COLOR=Red]8277[/COLOR][COLOR=Lime]26fa416a20fca[/COLOR][COLOR=Red]193[/COLOR][COLOR=Lime]81b33[/COLOR] DecodeHash: Code: [COLOR=Yellow]acf02a614af6233b18[/COLOR] P.S. вглядывайся и размышляй...
Что-нибудь типа Code: string decode(string text) { int len = text.Length; char[] tmp = (text.Substring(len - 5) + text.Substring(4, len - 12)).ToCharArray(); Array.Reverse(tmp); return new string(tmp); }
Если кому будет нужно: Perl Code: sub DecodeHash { my @temp = split('', $_[0]); my @array = @temp; my @first_part=splice @array, 4, 13; my @second_part=splice @temp, 20, 5; my $string=join('',reverse(@first_part),reverse(@second_part)); return $string; }