from flask import Blueprint, request, jsonify import hashlib import bcrypt from util.logger import logger from auth.token import verify_token hashverifier_blueprint = Blueprint('hashverifier_tool', __name__) @hashverifier_blueprint.route('/api/hash/verify', methods=['POST']) def verify_hash(): user = verify_token() if not user: return jsonify({"message": "Nicht autorisiert"}), 401 try: data = request.get_json() or {} text = data.get("text", "") hash_val = data.get("hash", "").strip() algorithm = data.get("algorithm", "sha256") if algorithm == "md5": computed = hashlib.md5(text.encode()).hexdigest() match = computed.lower() == hash_val.lower() elif algorithm == "sha256": computed = hashlib.sha256(text.encode()).hexdigest() match = computed.lower() == hash_val.lower() elif algorithm == "bcrypt": try: match = bcrypt.checkpw(text.encode(), hash_val.encode()) except Exception: return jsonify({"message": "Ungültiger bcrypt-Hash"}), 400 else: return jsonify({"message": "Unbekannter Algorithmus"}), 400 logger.info(f"Hash verify ({algorithm}) von {user['username']}: {match}") return jsonify({"match": match}) except Exception as e: logger.error(f"Fehler bei Hash-Verifikation: {e}") return jsonify({"message": "Fehler bei der Verifikation"}), 500