Mr.Davidwater Posted January 5, 2021 Share Posted January 5, 2021 Hi, derzeit Programmiere ich in Python ein Skript für die API von Bitcoin.de. Leider bekommen ich immer den selben Fehler und kann ihn leider nicht finden. Soweit ich sehen kann müsste mein Hash Code richtig sein den ich generiere, es liegt wahrscheinlich an der Versendung der Anfrage. Bekomme genau den selben Hash Code mit dem php Interpreter raus. Bitte einfach erklären, kann mit Fachwörter nicht viel Anfangen. Würde mich sehr über ein Code Beispiel freuen 😄 Skript für den Hash Code: import hashlib import hmac Post_Parameter={''} GET_Parameter={''} api_key= 'mein Api-Key' nonce= "1234569" api_secret= 'mein Api-secret' http_method= 'GET' uri= 'https://api.bitcoin.de/v4/orders' get_parameter_url_encoded_query_string = '' uri = uri+'?'+get_parameter_url_encoded_query_string post_parameter_md5_hashed_url_encoded_query_string = hashlib.md5(''.encode('UTF-8')).hexdigest() hmac_data= http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string print(hmac_data) hmac1= hmac.new(b'mein api-secret', b'', hashlib.sha256) hmac1.update(bytes(hmac_data, 'utf-8')) print(hmac1.hexdigest()) Mein Skript für die Abfrage: import requests url = "https://api.bitcoin.de/v4/orders" payload={} headers = { 'X-API-KEY': 'Api-Key', 'X-API-NONCE': "1234569", 'X-API-SIGNATURE': 'signatur', } response = requests.request("GET", url, headers=headers, data=payload) print(response.json()) Fehler Meldung: {'errors': [{'message': 'Invalid signature', 'code': 5}], 'credits': 23} Dokumentation Bitcoin.de: Signatur-GET-Beispiel Es soll die API-Funktion showOrderbook mit den folgenden Ausgangswerten durchgeführt werden: GET-Parameter: { 'type' : 'buy', 'amount' : 5.3, 'price' : 255.50 } POST-Parameter: { } api_key: 'MY_API_KEY' // Entspricht dem eigenen API-Key nonce: 1234567 // Das für den aktuellen Request verwendete Nonce api_secret: 'MY_API_SECRET' // Entspricht dem eigenen API-Secret http_method: 'GET' uri: 'https://api.bitcoin.de/v4/orders' Schritt 1: einen validen URL-encoded Query-String aus den GET-Parametern generieren get_parameter_url_encoded_query_string = 'type=buy&amount=5.3&price=255.5' // Die Reihenfolge der GET-Parameter ist irrelevant Schritt 2: Erweitern der URI um GET-Parameter uri = uri+'?'+get_parameter_url_encoded_query_string => 'https://api.bitcoin.de/v4/orders?type=buy&amount=5.3&price=255.5' Schritt 3: md5-Hash der POST-Parameter für die HMAC-Daten erstellen¹ post_parameter_md5_hashed_url_encoded_query_string = md5(''); => 'd41d8cd98f00b204e9800998ecf8427e' Schritt 4: Konkatinieren der HMAC-Eingabedaten hmac_data = http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string => 'GET#https://api.bitcoin.de/v4/orders?type=buy&amount=5.3&price=255.5#MY_API_KEY#1234567#d41d8cd98f00b204e9800998ecf8427e' Schritt 5: Bilden des eigentlichen sha256-HMACs hmac = HMAC('sha256', hmac_data, api_secret) => '' Link to comment Share on other sites More sharing options...
Mr.Davidwater Posted January 7, 2021 Author Share Posted January 7, 2021 Habe meinen Fehler gefunden: closed Link to comment Share on other sites More sharing options...
Tyler_Durden Posted January 7, 2021 Share Posted January 7, 2021 vor einer Stunde schrieb bjew: och, dann solltest fairerweise auch die Lösung schreiben ....... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now