{
  "id": 13263960,
  "title": "Architectural Breakdown: Django 6.1's PBKDF2 default change rewrites existing password hashes on nex",
  "url": "https://urgent.news/2026/10/10/architectural-breakdown-django-6-1s-pbkdf2-default-change-rewrites",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-10T00:04:34.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/agenticstack/architectural-breakdown-django-61s-pbkdf2-default-change-rewrites-existing-password-hashes-on-nex-4g70"
  },
  "original_language": "en",
  "account": "Django 6.1 implemented a PBKDF2 default iteration change, raising the default to 1,500,000. Every existing hash is treated as outdated and re-hashed during the next login. This automatic re-hashing is problematic in production environments with many active users, as it introduces a denial-of-service risk.",
  "summary": "# Django 6.1's PBKDF2 Upgrade: How Automatic Hash Rewrites Became a Production Denial-of-Service Django 6.1 changed PBKDF2's default iterations from 1,200,000 to 1,500,000. The framework treats every existing hash as outdated and re-hashes it on the next login. That sounds like a feature until you have 30,000 active users and a single-column database write spike. ## The Upgrade Mechanism,…",
  "key_points": [],
  "editors_take": "The change in Django 6.1 forces re-hashing of existing passwords on next login, potentially causing a denial-of-service risk in production environments with many active users.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}