11.2 掩碼生成函數
11.2 掩碼生成函數
掩碼生成函數(Mash generation function)與散列函數不同,它為可變長度的八位位組串生成可變長度的消息摘要。掩碼生成函數通常需要一個整數進行初始化,其中該整數參數設定了掩碼生成函數的輸出長度,因此采用掩碼生成函數可以為消息生成想要的特定長度的摘要值。與散列函數相同,掩碼生成函數也是確定性的,即輸出僅依賴于輸入消息。
11.2.1 MGF1
該掩碼生成函數需要使用選擇的散列函數和輸出長度參數進行初始化,其中散列函數應為11.1中所定義的函數中的一種,輸出長度參數定義了MGF1的輸出八位位組串的長度。
輸入:
a) 長度為zLen的八位位組串Z ,或者長度為zBits的比特串ZB(這取決于選擇的散列函數,且可能存在長度限制);
b) 指定的輸出八位位組串的長度oLen(若以八位位組串的形式返回輸出),或者指定的輸出比特串的長度oBits(若以比特串的形式返回輸出);其中oLen和oBits均為正整數,且8oLen和oBits均小于hBits×232。
輸出:
a) 掩碼值,可能為oLen長的八位位組串mask,或oBits長的比特串MB,或“error”。
操作:
zLen的比特串ZB;
b) 若指定輸出為oLen長的八位位組串,則計算oBits = 8*oLen;
c) 若(zBits + 32)超出了所選散列函數規定的輸入長度限制,或者oBits>hBits×232,則輸出“error”并終止;
d) 令MB為空串;計算cThreshold =「(oBits) / (hBits)」;
e) 令counter = 0:
1) 將counter轉換為32 bits長的比特串CB = I2BSP (counter);
2) 計算hBits長的散列值HB =hash ( ZB || CB);
3) 令MB = MB || HB。
GB/T 32213-2015 信息安全技術 公鑰基礎設施 遠程口令鑒別與密鑰建立規范
推薦文章: