基本
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.