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