大家好,我是新来的。我正在尝试连接到一个网站,但它给了我403错误。
我希望有人可以帮助我,这是网站上的内容:
通过连接这四个字符串形成消息:
现时。一个63位正整数。
HMAC身份验证密钥。这是密钥/秘密对中的第一个。
相对路径,例如/ api / wallet /
以URL编码格式获取或POST参数。
哈希算法是SHA256。
发送签名
签名通过HTTP标头发送。总共需要三个字段:
Apiauth-Key:HMAC身份验证密钥。
Apiauth-Nonce:此特定请求中的nonce。
Apiauth-Signature:HMAC签名。
这是我的代码,如果有人能帮我打开网站连接,我会非常感激,谢谢
Imports System
Imports System.Web.Services
Imports System.Net
Imports System.IO
Imports System.Security.Cryptography
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports System.Text
Imports System.Web
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Call authtest()
End Sub
Sub authtest()
Dim webStream As Stream
Dim webResponse = ""
Dim req As WebRequest
Dim res As HttpWebResponse
Dim hmacauthkey As String = "<myapikey>"
Dim hmacsecret As String = "<myapisecret>"
Dim r As New Random
Dim nonce1 As Long = Math.Round(r.NextDouble * Long.MaxValue)
Dim relativepath As String = "/api/myself/"
Dim params As String = ""
Dim getparamsurlencoded = WebUtility.HtmlEncode(params)
Dim message As String = Convert.ToString(nonce1) & hmacauthkey & relativepath & getparamsurlencoded
Dim signature As String = HashString(message)
req = CType(WebRequest.Create("https://website.com/api/myself/"), HttpWebRequest)
req.Credentials = New NetworkCredential("<username>", "<password>")
req.ContentType = "application/x-www-form-urlencoded"
req.Headers.Add("Apiauth-Key", "<myapikey>")
req.Headers.Add("Apiauth-Nonce", Convert.ToString(nonce1))
req.Headers.Add("Apiauth-Signature", signature)
req.Method = "GET"
res = CType(req.GetResponse(), HttpWebResponse) ' Send Request
webStream = res.GetResponseStream() ' Get Response
Dim webStreamReader As New StreamReader(webStream)
While webStreamReader.Peek >= 0
webResponse = webStreamReader.ReadToEnd()
End While
MsgBox(webResponse)
End Sub
Public Shared Function HashString(ByVal StringToHash As String) As String
Dim myEncoder As New System.Text.UTF8Encoding
Dim Key() As Byte = myEncoder.GetBytes("<mysecretkey>")
Dim Text() As Byte = myEncoder.GetBytes(StringToHash)
Dim myHMACSHA256 As New System.Security.Cryptography.HMACSHA256(Key)
Dim HashCode As Byte() = myHMACSHA256.ComputeHash(Text)
Return StrConv(Convert.ToBase64String(HashCode), vbUpperCase)
End Function
Function HMACSHA256_Encrypt(ByVal Txt As String) As String
Try
Dim secretkey As String = "<mysecretkey>"
Dim sha As New System.Security.Cryptography.HMACSHA256(System.Text.UTF8Encoding.UTF8.GetBytes(secretkey))
Dim Hash() As Byte = sha.ComputeHash(System.Text.UTF8Encoding.UTF8.GetBytes(Txt))
Dim sb As New System.Text.StringBuilder(Hash.Length * 2)
For Each B As Byte In Hash
sb.Append(Hex(B).PadLeft(2, "0"))
Next
Return sb.ToString.ToLower
Catch ex As Exception
Debug.Print(Date.Now & " SHA256_Encrypt error " & ex.Message)
Return Nothing
End Try
End Function
End Class