2016-03-30 8 views
6

次のコードは、VBの文字列を復号化:PHPでTripleDESCryptoService文字列をデコードするには?

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 

私はモバイルアプリのサービスのためのPHPスクリプトにこのプロセスを複製する方法を知っていただきたいと思います。ありがとう。

+0

PHPはできませんが、次のことができるようにも「プラグイン」(検索、インストール、php.iniのを更新) –

+1

と詳細については、このリンクを見てください、あなたがこの暗号化を使用していますレガシーアプリケーションとの互換性のためのアルゴリズム? 'AesCryptoServiceProvider'を使用していない場合、あなたの現在のものよりも強力なAESを使用しています... – Codexer

+0

テストのためにサンプルの暗号テキスト、キー、および期待される平文を提供できますか? – miken32

答えて

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); 
?> 

単独で3DES

+0

これはvbクラスのImと同じ暗号化、復号化、そして常に異なる値を返します –