def scrypt(*, password: str, salt: str, n: int, r: int, p: int,
           dklen: int) -> bytes:
    if n >= 2**(128 * r / 8):
        raise ValueError(
            "The given `n` should be less than `2**(128 * r / 8)`."
            f"\tGot `n={n}`, r={r}, 2**(128 * r / 8)={2**(128 * r / 8)}")
    res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p)
    return res if isinstance(
        res, bytes) else res[0]  # PyCryptodome can return Tuple[bytes]
示例#2
0
def scrypt(*, password: str, salt: str, n: int, r: int, p: int,
           dklen: int) -> bytes:
    if n * r * p < 2**20:  # 128 MB memory usage
        raise ValueError("The Scrypt parameters chosen are not secure.")
    if n >= 2**(128 * r / 8):
        raise ValueError(
            "The given `n` should be less than `2**(128 * r / 8)`."
            f"\tGot `n={n}`, r={r}, 2**(128 * r / 8)={2**(128 * r / 8)}")
    res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p)
    return res if isinstance(
        res, bytes) else res[0]  # PyCryptodome can return Tuple[bytes]
示例#3
0
def scrypt(*, password: str, salt: str, n: int, r: int, p: int,
           dklen: int) -> bytes:
    assert (n < 2**(128 * r / 8))
    res = _scrypt(password=password, salt=salt, key_len=dklen, N=n, r=r, p=p)
    return res if isinstance(
        res, bytes) else res[0]  # PyCryptodome can return Tuple[bytes]