信息安全實驗:對稱加密算法DES之DES_ecb_encrypt()中密鑰key的生成

基本

int  DES_set_key(const_DES_cblock  *key,DES_key_schedule *schedule)

用8字節的key產生schedule.成功返回值爲1,否則爲0.

注:一個DES key是DES_cblock類型的,有8個bit組成,最後一位爲奇校驗位.schedule是key的擴展,目的是加速加密過程,它的每個字節的最後一位也是奇校驗位.

其他

與密鑰相關的函數還有很多,如下:

void DES_random_key(DES_cblock *ret);

int    DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule);

void DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule);

int    DES_key_sched(const_DES_cblock *key,DES_key_schedule  *schedule);

void DES_set_odd_parity(DES_cblock *key);

int    DES_is_weak_key(const_DES_cblock *key);

void DES_string_to_key(const char *str,DES_cblock *key);

void DES_string_to_2keys(const char *str,DES_cblock *key1,DES_cblock *key2);

解釋

void DES_random_key(DES_cblock *ret);//產生一個隨機的key.

int    DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule);//在用key產生schedule的同時會確認key是奇校驗的,不是weak或者semi-weak的;如果校驗出錯,-1返回;如果key是weak或semi-weak的,-2返回;如果有錯誤返回,schedule就沒有正確產生.

void DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule);//由key產生shedule,但不做以上的那些檢查.

int    DES_key_sched(const_DES_cblock *key,DES_key_schedule  *schedule);//與DES_set_key相似.

void DES_set_odd_parity(DES_cblock *key);//設置奇校驗位

int    DES_is_weak_key(const_DES_cblock *key);//如果key是一個weak key,返回1;如果不是,返回0.

void DES_string_to_key(const char *str,DES_cblock *key);//由char類型的數組產生一個key

void DES_string_to_2keys(const char *str,DES_cblock *key1,DES_cblock *key2);//由char類型數組產生兩個key.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章