Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net vb中的php等效代码_Php_Vb.net - Fatal编程技术网

asp.net vb中的php等效代码

asp.net vb中的php等效代码,php,vb.net,Php,Vb.net,我正在开发支付系统,php中的原始代码运行良好,现在我正在asp.netvb上重写它,我一步一步地修改它,并在这个阶段停止,因为php和.net之间的结果不同 PHP代码: 结果:SEzqjmvRFTZ0VI66taNnOlw9A4E= .NET代码: 结果:SEZQJMVRFTZ0VI66TANOG== 如果你看到结果几乎相同,只是最后4个字母不同,这意味着我接近成功:结果必须是相同的 PHP:SEZQJMVRFTZ0VI66TANOLW9A4= .NET:sezqjmvrftz0vi66ta

我正在开发支付系统,php中的原始代码运行良好,现在我正在asp.netvb上重写它,我一步一步地修改它,并在这个阶段停止,因为php和.net之间的结果不同

PHP代码:

结果:SEzqjmvRFTZ0VI66taNnOlw9A4E=

.NET代码:

结果:SEZQJMVRFTZ0VI66TANOG==

如果你看到结果几乎相同,只是最后4个字母不同,这意味着我接近成功:结果必须是相同的

PHP:SEZQJMVRFTZ0VI66TANOLW9A4=


.NET:sezqjmvrftz0vi66tanog==

您的循环应该从0运行到输入字符串长度。此外,bytearray的init应该是十六进制字符串的一半

    static void Main(string[] args)
    {
        string tmp = "484cea8e6bd1153674548ebab5a3673a5c3d0381";

        Console.WriteLine(Convert.ToBase64String(Pack2(tmp)));
    }

    public static byte[] Pack2(string hexString)
    {
        byte[] bytes = new byte[hexString.Length / 2]; // two hex-digits are one byte

        for (int i = 0; i < hexString.Length; i += 2)
            bytes[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16);

        return bytes;
    }

为什么这个标签是c?原来是一个20字节的散列;这是一个16字节的散列,VB中的新字节15是一个16字节数组,使用0-thru-31索引第2步,base-64长度为16字节。检查中数组的长度original@BugFinderc和vb.net非常接近如果你用c找到解决方案,我可以把它转换成vb.c和vb.net非常接近-他们的格言是:@Realbitt不是这样工作的-我们找不到解决方案-你需要这样做。我们来这里是为了帮助你解决一些具体的问题,比如什么是不起作用的。发布的代码Realbit是不起作用的。通过这段代码,我们得到了所需的结果SEzqjmvRFTZ0VI66taNnOlw9A4E=。如果他发布工作代码,我们可以更深入地了解。C-share代码运行良好,结果相同,我将其转换为VisualBasic,区别在于最后一个字符。你知道,微软触摸:,无论如何,我把它放在一个编译过的二进制文件DLL中,用在我的项目中。谢谢你,卡拉
    Function Pack2(strToPack As String) As Byte()
        Dim raw_bytes As Byte() = New Byte(15) {}
        For i As Integer = 0 To 32 - 1 Step 2
            raw_bytes(i / 2) = Convert.ToByte(strToPack.Substring(i, 2), 16)
        Next

        Return raw_bytes
    End Function

    Function getBase64Code(strToCode As String, Optional pack As Boolean = False) As String
        Dim byt As Byte() = System.Text.Encoding.ASCII.GetBytes(strToCode)

        If pack Then
            byt = Pack2(strToCode)
        End If

        Return Convert.ToBase64String(byt)

    End Function

 Dim sha1Signature As String = "484cea8e6bd1153674548ebab5a3673a5c3d0381"

Response.Write(getBase64Code(sha1Signature, True))    
    static void Main(string[] args)
    {
        string tmp = "484cea8e6bd1153674548ebab5a3673a5c3d0381";

        Console.WriteLine(Convert.ToBase64String(Pack2(tmp)));
    }

    public static byte[] Pack2(string hexString)
    {
        byte[] bytes = new byte[hexString.Length / 2]; // two hex-digits are one byte

        for (int i = 0; i < hexString.Length; i += 2)
            bytes[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16);

        return bytes;
    }