【问题标题】:How to decode TripleDESCryptoService string in php?如何在 php 中解码 TripleDESCryptoService 字符串?
【发布时间】:2016-03-30 17:55:19
【问题描述】:

以下代码在VB中解密一个字符串:

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 脚本中。谢谢。

【问题讨论】:

  • PHP 不能单独使用“插件”,您可以(搜索、安装、更新 php.ini)
  • 您是否使用此加密算法与旧版应用程序兼容?如果不使用AesCryptoServiceProvider,因为它使用的 `AES 比你现在的要强...
  • 您能否提供示例密文、密钥和预期的明文进行测试?
  • @miken32 当然,例如:karlo = A/o251XHauM=
  • 即明文和密文;用于解密的密钥是什么?

标签: php vb.net tripledes


【解决方案1】:
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

【讨论】:

  • 这只是不能像我展示的 vb 类那样加密、解密,并且总是返回不同的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
相关资源
最近更新 更多