semvec/pypi-packages huggingface dataset:
django-peppered-passwords-fatih-erikli 0.0.4
Django hashed passwords with pepper
Requires Python: >=3.7

# Django peppered passwords

Adds a secret private key to the hashed passwords in django.contrib.auth.

## Configuration

Define a secret in your project's settings.

    PEPPERED_PASSWORDS_SECRET_KEY = 'b04ab0b2d1e69cfa54f49f348c3388c2e6017cae6c5aefa4'

Do not use the secret key in example. Create your own.

Create a secret key by using python's builtin secret module.

    >>> import secrets
    >>> secrets.token_bytes(32).hex()

Add the hasher `PASSWORD_HASHERS` in your projects settings file. `PASSWORD_HASHERS` comes from Django.

  PASSWORD_HASHERS = [
    "django_peppered_passwords.hashers.PepperedPBKDF2PasswordHasher"
  ]

Please take it to the consideration, this is an irreversible action. Switching from peppered hashing to Django's default hasher is not possible.

Once you update the secret key, all the passwords will be broken. The users will need to reset their passwords via email.

## Background

Currently a user's password stored in database in this format:

     <algorithm>$<iterations>$<salt>$<hash>

Hash (Last column) is the password hashed with the salt in previous column. Example, these are two computed passwords, stored on database, for the same password of two users.

    pbkdf2_sha256$600000$fb9cUsHWK4EMZ7VWGBAcGD$2uwiVefFwanIhxLrv+/t3sKvP4X6tDKEMw/ysHD5dIc=
    pbkdf2_sha256$600000$HgWHWrF2qQD9Owj4XeEkjY$rh0qzfo+/ZCzWbL9ZJa8aKhiO5xoEMfT4EtP/+A+LzI=

The password is 123456. Imagine I am an attacker, who got the database of different django project, I want to look up the users who have chosen the password 123456. I have the salts of users stored in database.

    >>> make_password('123456', 'fb9cUsHWK4EMZ7VWGBAcGD')
    pbkdf2_sha256$600000$fb9cUsHWK4EMZ7VWGBAcGD$2uwiVefFwanIhxLrv+/t3sKvP4X6tDKEMw/ysHD5dIc=
    >>> make_password('123456', 'HgWHWrF2qQD9Owj4XeEkjY')
    pbkdf2_sha256$600000$HgWHWrF2qQD9Owj4XeEkjY$rh0qzfo+/ZCzWbL9ZJa8aKhiO5xoEMfT4EtP/+A+LzI=

These are correct password combinations. I am able to lookup the users who have their passwords exposed in public. Password 123456 is not a possible case in Django, since the password fields have a complexity validation. However, the salt is available to the attacker when a database is stolen. Salt could be used

- To hash the raw password pair in a rainbow table.
- To hash the already exposed passwords.

There is one more element needed for hashing the password, pepper, should be project specific. When a database is exposed in public, the attacker will not be able to lookup the passwords, since they don't have the secret pepper key.

## Notes from Django ticket 30561

According to NIST Digital Identity Guidelines Authentication and Lifecycle Management document, verifiers should perform an additional iteration of a key derivation function using a salt value that is secret and known only to the verifier.

- <https://code.djangoproject.com/ticket/30561>
- <https://pages.nist.gov/800-63-3/sp800-63b.html>
problemator 1.2.0
WolframAlpha's Unlimited AI-generated practice problems and answers API wrapper.
Requires Python: >=3.0

<h1 align="center">problemator - WolframAlpha's Unlimited AI-generated practice problems and answers API wrapper.</h1>

<br>

<h1 align="center"> -How to use- </h1>

```python
from problemator import Problemator
from random import choice

p = Problemator()  # Initialize
print(p.categories)  # See categories

category = p.get_category(0)  # Get Addition

# LVL: 0 - Beginner; 1 - Intermediate; 2 - Advanced
# Count - Number of problems
# type - Category
problem = p.generate_problem(lvl=0, type=category) # Generate a problem

print(problem['text'])  # Text of the problem
print(problem['image'])  # Image of the problem
print(problem['difficulty'])  # Difficulty of the problem

result = p.check_problem(problem, 'x+5')  # Check problem, where x+5 - answer
print(result['correct'])  # True or False
print(result['attempt'])  # Image of the Attempt
print(result['hint'])  # Image of the Hint
print(result['solution'])  # Image of the Solution
```
rdpower 1.0.1
Power Calculations for RD Designs
Requires Python: >=3.6

# rdpower: Power and Sample Size Calculations for RD Designs

The regression discontinuity (RD) design is a popular quasi-experimental design for causal inference and policy evaluation. The `rdpower` package provides tools to perform power, sample size and MDE calculations in RD designs: `rdpower` calculates the power of an RD design, `rdsampsi` calculates the required sample size to achieve a desired power and `rdmde` calculates minimum detectable effects. This package relies on the `rdrobust` package. See Calonico, Cattaneo and Titiunik (2014, 2015) and Calonico, Cattaneo, Farrell and Titiunik (2017). For more details visit [https://rdpackages.github.io/rdpower/](https://rdpackages.github.io/rdpower/).

## References

- Calonico, S., M. D. Cattaneo, M. Farrell and R. Titiunik. (2017). [`rdrobust`: Software for Regression Discontinuity Designs](https://rdpackages.github.io/references/Calonico-Cattaneo-Farrell-Titiunik_2017_Stata.pdf). *Stata Journal* 17(2): 372-404.

- Calonico, S., M. D. Cattaneo, and R. Titiunik. (2014). [`Robust Data-Driven Inference in the Regression-Discontinuity Design`](https://rdpackages.github.io/references/Calonico-Cattaneo-Titiunik_2014_Stata.pdf). *Stata Journal* 14(4): 909-946.

- Calonico, S., M. D. Cattaneo, and R. Titiunik. (2015). [`rdrobust`: An R Package for Robust Nonparametric Inference in Regression-Discontinuity Designs](https://rdpackages.github.io/references/Calonico-Cattaneo-Titiunik_2015_R.pdf). *R Journal* 7(1): 38-51.

- Cattaneo, M. D., R. Titiunik and G. Vazquez-Bare. (2019). [`Power Calculations for Regression Discontinuity Designs`](https://rdpackages.github.io/references/Cattaneo-Titiunik-VazquezBare_2019_Stata.pdf). *Stata Journal*, 19(1): 210-245.

## Authors

- Matias Cattaneo, Princeton University. Email: cattaneo@princeton.edu
- Rocio Titiunik, Princeton University. Email: titiunik@princeton.edu
- Ricardo Masini, UC Davis. Email: rmasini@ucdavis.edu
- Gonzalo Vazquez-Bare, UC Santa Barbara. Email: gvazquez@econ.ucsb.edu