2016-03-30 14 views
6

następujący kod odszyfrowuje ciąg w VB:Jak odkodować ciąg TripleDESCryptoService w php?

Public Function Desencriptar(ByVal Input As String) As String 

     Dim IV() As Byte = ASCIIEncoding.ASCII.GetBytes("abcdefgh") 
     Dim EncryptionKey() As Byte = Convert.FromBase64String("hereGoesTheKey") 
     Dim buffer() As Byte = Convert.FromBase64String(Input) 
     Dim des As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider 
     des.Key = EncryptionKey 
     des.IV = IV 
     Return Encoding.UTF8.GetString(des.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length())) 

    End Function 

Chciałbym umieć powielać ten proces do skryptu php dla aplikacji mobilnej usługi. Dzięki.

+0

PHP sam nie może, ale z „wtyczki” może być w stanie, (search, instalowanie aktualizacji php.ini) –

+1

Używasz tego szyfrowania algorytm zgodności ze starszą aplikacją? Jeśli nie, użyj 'AesCryptoServiceProvider', ponieważ używa' AES, która jest silniejsza od twojej obecnej ... – Codexer

+0

Czy możesz podać przykładowy tekst szyfru, klucz i oczekiwany tekst jawny do testowania? – miken32

Odpowiedz

2
this code might help. 
<?php 
    $key = "123456"; 
    function pkcs7_pad($text, $blocksize) 
    { 
     $pad = $blocksize - (strlen($text) % $blocksize); 
     return $text . str_repeat(chr($pad), $pad); 
    } 

    $input = pkcs7_pad("test", 16);//16byte 
    // $key = md5(utf8_encode($key), true); 
    $td = mcrypt_module_open('tripledes', '', 'ecb', '');//ecb mode 
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
    mcrypt_generic_init($td, $key, $iv); 
    $encrypted_data = mcrypt_generic($td, $input); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 

    echo base64_encode($encrypted_data); 
?> 

i proszę spojrzeć na ten link, aby uzyskać więcej szczegółów 3DES

+0

to po prostu nie działa tak samo szyfrowanie, odszyfrowywanie jak vb klasy Im pokazano i zawsze zwraca różne wartości –