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