Content deleted Content added
m Capitalising short description "cryptographic tool" per WP:SDFORMAT (via Bandersnatch) |
m Reverted edits by 73.167.116.198 (talk) (HG) (3.4.12) |
||
(10 intermediate revisions by 6 users not shown) | |||
Line 1:
{{Short description|Cryptographic tool}}
{{Use American English|date = April 2019}}
A '''mask generation function''' ('''MGF''') is a cryptographic primitive similar to a [[cryptographic hash function]] except that while a hash function's output has a fixed size, a MGF supports output of a variable length. In this respect, a MGF can be viewed as a
== Definition ==
Line 19:
=== Random number generators ===
NIST Special Publication 800-90A<ref>{{cite
== Examples ==
Line 60:
=== Example code ===
Below is
<syntaxhighlight lang="python">
import hashlib
def
"""Mask generation function."""
hLen = hash_func().digest_size
# https://www.ietf.org/rfc/rfc2437.txt
# 1. If l > 2^32(hLen), output "mask too long" and stop.
if length > (hLen << 32):
raise ValueError("mask too long")
# 2. Let T be the empty octet string.
T = b""
# 3. For counter from 0 to \lceil{l / hLen}\rceil-1, do the following:
# Note: \lceil{l / hLen}\rceil-1 is the number of iterations needed,
# but it's easier to check if we have reached the desired length.
counter = 0
# a. Convert counter to an octet string C of length 4 with the primitive I2OSP: C = I2OSP (counter, 4)
C =
# b. Concatenate the hash of the seed Z and C to the octet string T: T = T || Hash (Z || C)
counter += 1
# 4. Output the leading l octets of T as the octet string mask.
return
</syntaxhighlight>
Line 82 ⟶ 91:
<syntaxhighlight lang="pycon">
Python 3.10.
Type "help", "copyright", "credits" or "license
>>> from mgf1 import mgf1
>>> from hashlib import sha256
>>>
'1ac907'
>>>
'1ac9075cd4'
>>>
'bc0c655e01'
>>>
'bc0c655e016bc2931d85a2e675181adcef7f581f76df2739da74faac41627be2f7f415c89e983fd0ce80ced9878641cb4876'
>>>
'382576a7841021cc28fc4c0948753fb8312090cea942ea4c4e735d10dc724b155f9f6069f289d61daca0cb814502ef04eae1'
</syntaxhighlight>
Line 102 ⟶ 110:
{{reflist}}
[[Category:Articles with example Python (programming language) code]]
[[Category:Cryptographic primitives]]
[[Category:Cryptographic hash functions]]
|