LINUX.ORG.RU

Помогите прикрутить perl реализацию алгоритма к Си'шной


0

0

Задача: Требуется что бы строка, зашифрованная элементарным XOR
алгоритмом в реализации на Си, можно было бы расшифровать в Perl
реализации и наоборот. Нижеприведенный код Perl алгоритма с этим не справляется :(


Реализация на Си:
VOID CryptData(IN PSTR pData,IN DWORD dwDataLen,IN BYTE bCrypt)
{ //Simple crypt :-)
 PSTR Key = CRYPT_STR;
 DWORD i,j,Len = strlen(CRYPT_STR);
 for(i=0,j=0;i<dwDataLen;i++,j++){
  if(j == Len)j = 0;
  pData[i] ^= Key[j];
 }
}

Реализация на Perl (не работает для Си алгоритма)
# \$Data
sub CryptData
{
 my $Data = ${$_[0]};
 my @Key = unpack("C*",$CRYPT_STR);
 ${$_[0]} = pack("C*", map { my $c = shift @Key; push @Key, $c; $_ ^ $c } unpack("C*", $Data));
}

Замечания:
1. Строка CRYPT_STR равна строке $CRYPT_STR
2. bCrypt не используется
anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.