Автор Тема: Как правильно заставить работать шифрование RC4 между autoit и php-скриптом  (Прочитано 5229 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MadDog [?]

  • Новичок
  • *
  • Сообщений: 26
  • Репутация: 0
    • Награды
В общем шифрую я данные

Код: AutoIt [Выделить]
#include <Crypt.au3>


$hWnd="proverka raboty"
$pass="123"

;защифровали
$jjtt1 = _Crypt_EncryptData($hWnd, $pass, $CALG_RC4)
ConsoleWrite($jjtt1& @CRLF)

;расшифровали
$jjtt2 = BinaryToString(_Crypt_DecryptData($jjtt1, $pass, $CALG_RC4))
ConsoleWrite("без кодирования-"&$jjtt2& @CRLF)
 

выдаёт - 0x1175EA89CB4F04BCBBDFCE2C06A922

вот как правильно средствами PHP его раскодировать. Перепробовал всё что можно. Всё время получается не то !


вот библиотека для php
<?php 
/** 
 * Class RC4 
 * 
 * @category Crypt 
 * @author   Rafael M. Salvioni 
 */ 

/** 
 * Class RC4 
 * 
 * Implements the encrypt algorithm RC4. 
 * 
 * @category Crypt 
 * @author   Rafael M. Salvioni 
 * @see      http://pt.wikipedia.org/wiki/RC4 
 */ 
class RC4 

    
/** 
     * Store the permutation vectors 
     * 
     * @var array 
     */ 
    
private static $S = array(); 
     
    
/** 
     * Swaps values on the permutation vector. 
     * 
     * @param int $v1 Value 1 
     * @param int $v2 Value 2 
     */ 
    
private static function swap(&$v1, &$v2
    { 
        
$v1 $v1 $v2
        
$v2 $v1 $v2
        
$v1 $v1 $v2
    } 
     
    
/** 
     * Make, store and returns the permutation vector about the key. 
     * 
     * @param string $key Key 
     * @return array 
     */ 
    
private static function KSA($key
    { 
        
$idx crc32($key); 
        if (!isset(
self::$S[$idx])) { 
            
$S   range(0255); 
            
$j   0
            
$n   strlen($key); 
            for (
$i 0$i 255$i++) { 
                
$char  ord($key{$i $n}); 
                
$j     = ($j $S[$i] + $char) % 256
                
self::swap($S[$i], $S[$j]); 
            } 
            
self::$S[$idx] = $S
        } 
        return 
self::$S[$idx]; 
    } 
     
    
/** 
     * Encrypt the data. 
     * 
     * @param string $key Key 
     * @param string $data Data string 
     * @return string 
     */ 
    
public static function encrypt($key$data
    { 
        
$S    self::KSA($key); 
        
$n    strlen($data); 
        
$i    $j 0
        
$data str_split($data1); 
        for (
$m 0$m $n$m++) { 
            
$i        = ($i 1) % 256
            
$j        = ($j $S[$i]) % 256
            
self::swap($S[$i], $S[$j]); 
            
$char     ord($data{$m}); 
            
$char     $S[($S[$i] + $S[$j]) % 256] ^ $char
            
$data[$m] = chr($char); 
        } 
        
$data implode(''$data); 
        return 
$data
    } 
     
    
/** 
     * Decrypts the data. 
     * 
     * @param string $key Key 
     * @param string $data Encripted data 
     * @return string 
     */ 
    
public static function decrypt($key$data
    { 
        return 
self::encrypt($key$data); 
    } 
}

вот окно вывода
<?php 

include('RC4.php'); 

$string "proverka raboty"
$key    "123"

$crypt  RC4::encrypt($key$string); 
$dcrypt RC4::decrypt($key$crypt); 

echo 

String: 
$string 
Key: 
$key 

Encripted Data: 
$crypt

Success: " 
. ($string == $dcrypt 'true' 'false') . 
"


?>

Как быть ?!
Просто хочу связать PHP и autoit шифрование между собой, а не получается :(
« Последнее редактирование: Октябрь 30, 2011, 20:14:30 от MadDog »

Русское сообщество AutoIt


Оффлайн MadDog [?]

  • Новичок
  • *
  • Сообщений: 26

  • Автор темы
  • Репутация: 0
    • Награды
вопрос решил сам. Пришлось переписать алгоритм для autoit  )

Оффлайн Alonwoolf_ [?]

  • Новичок
  • *
  • Сообщений: 4
  • Репутация: 0
    • Награды
выложи код если не сложно плииз!

Русское сообщество AutoIt


Оффлайн blacklis [?]

  • Новичок
  • *
  • Сообщений: 64
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
 Был удивлён, что проблему здесь так и не решили,а тс не поделился своим решением. Данный топик в топе гугла по запросу rc4 php autoit.
 Потратил некоторое время на решение проблемы, писать реализации своих велосипедов шифрования не хотелось,  так что хватило гугла.
Здесь http://www.autoitscript.com/forum/topic/66005-alternative-to-stringencrypt/ наш англоязычный коллега PsaltyDS  любезно поделился своей альтернативой шифрования rc4, которое корректно работает со всеми стандартными решениями rc4, с которыми я его попробовал :-X
 В общем, пользуйтесь
 Стандартные функции из crypt.au3  из коробки не работали корректно ни с одной реализацией aes или rc4 на php из мною использованных. :beer:

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
10362 Просмотров
Последний ответ Ноябрь 16, 2009, 09:13:26
от Suppir
5 Ответов
5448 Просмотров
Последний ответ Декабрь 16, 2010, 23:04:55
от CreatoR
1 Ответов
3225 Просмотров
Последний ответ Февраль 16, 2011, 14:20:52
от CreatoR
0 Ответов
2377 Просмотров
Последний ответ Март 12, 2011, 15:29:10
от Alexl82
4 Ответов
2980 Просмотров
Последний ответ Май 24, 2011, 16:26:21
от Kaster
18 Ответов
8225 Просмотров
Последний ответ Июнь 07, 2011, 01:18:58
от CreatoR
6 Ответов
4655 Просмотров
Последний ответ Сентябрь 17, 2012, 18:57:31
от Vinosh
2 Ответов
3222 Просмотров
Последний ответ Март 22, 2013, 20:48:24
от zerobot
0 Ответов
1077 Просмотров
Последний ответ Март 19, 2014, 13:38:09
от vaf
1 Ответов
1776 Просмотров
Последний ответ Июнь 13, 2016, 23:25:47
от kurand