The module implementing the password-based key derivation function in accordance with R 50.1.111-2016. The module includes the R5011112016
and GOSTPBKDFError
classes and the new
function.
Creates a new object for the password-based key derivation function and returns it.
import gostcrypto
password = b'password'
salt = b'salt'
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
Arguments:
- password - password that is a character string in Unicode UTF-8 encoding.
Keyword arguments:
- salt - random value. If this argument is not passed to the function, the
os.urandom
function is used to generate this value with the length of the generated value of 32 bytes. - counter - number of iterations. The default value is 1000.
Return:
- New object for the password-based key derivation function (as an instance of the R5011112016 class).
Exception:
- GOSTPBKDFError(invalid password value') - if the password value is incorrect.
- GOSTPBKDFError('invalid salt value') - if the salt value is incorrect.
Class that implementing the calculating the password-based key derivation function in accordance with R 50.1.111-2016.
Returns a derived key (as a byte object).
import gostcrypto
password = b'password'
salt = b'salt'
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_result = pbkdf_obj.derive(32)
Arguments:
- dk_len - Required length of the output sequence (in bytes).
Return:
- The derived key (as a byte object).
Exception:
- GOSTPBKDFError('invalid size of the derived key') - in case of invalid size of the derived key.
Returns a derived key (as a hexadecimal string).
import gostcrypto
password = b'password'
salt = b'salt'
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_result = pbkdf_obj.hexderive(32)
Arguments:
- dk_len - Required length of the output sequence (in bytes).
Return:
- The derived key (as a hexadecimal string).
Exception:
- GOSTPBKDFError('invalid size of the derived key') - in case of invalid size of the derived key.
Сlears the password value.
import gostcrypto
password = b'password'
salt = b'salt'
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_obj.clear()
The byte object containing a random value (salt). Required when generating the
salt
value usingos.urandom
.
import gostcrypto
password = b'password'
pbkdf_obj = gostcrypto.gostpbkdf.new(password)
salt = pbkdf_obj.salt
The class that implements exceptions.
import gostcrypto
password = b'password'
salt = b'salt'
try:
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=2000)
pbkdf_result = pbkdf_obj.hexderive(32)
except gostcrypto.gostpbkdf.GOSTPBKDFError as err:
print(err)
else:
print(pbkdf_result)
Exception types:
invalid password value
- if the password value is incorrect.invalid salt value
- if the salt value is incorrect.invalid size of the derived key
- if the size of the derived key is incorrect.
import gostcrypto
password = b'password'
salt = b'salt'
pbkdf_obj = gostcrypto.gostpbkdf.new(password, salt=salt, counter=4096)
pbkdf_result = pbkdf_obj.derive(32)