关闭

Openssl Des-2

标签: 加密output解密input多线程socket
1288人阅读 评论(0) 收藏 举报
int DES_enc_read(int fd,void *buf,int len,DES_key_schedule *sched,

         DES_cblock *iv);

使用此函数时要小心,如果写入的数据超过MAXWRITE个字节,那么数据将会被分割成多个数据块,每个数据加密时使用的IV相同。因此,在使用此函数时,一定要了解此函数的内部实现机制;

此函数客户从文件,或者socket等输入设备中读取数据,并解密数据;

解密模式根据DES_rw_mode的定义,采用PCBC或者CBC模式;

fd: 设备描述符;

buf: 输出数据缓冲区;

len: 长度;

sched: 密钥;

iv: 初始化向量;

返回值: -1 错误,其他数据,读取的数据长度;


int DES_enc_write(int fd,const void *buf,int len,DES_key_schedule *sched,
          DES_cblock *iv);

使用此函数时要小心,如果写入的数据超过MAXWRITE个字节,那么数据将会被分割成多个数据块,每个数据加密时使用的IV相同。因此,在使用此函数时,一定要了解此函数的内部实现机制;

此函数将数据加密后写入文件,或者socket等输出设备;

加密模式根据DES_rw_mode的定义,采用PCBC或者CBC模式;

fd: 设备描述符;

buf: 输入数据缓冲区;

len: 长度;

sched: 密钥;

iv: 初始化向量;

返回值: -1 错误,其他数据,写入的数据长度;

char *DES_fcrypt(const char *buf,const char *salt, char *ret);

DES_fcrypt()是Unix下crypt算法的更快的一种实现,值需要使用少量的内存空间,与通常的crypt不同,第三个参数是返回值,至少需要14个字节的空间;

此函数支持多线程调用;


char *DES_crypt(const char *buf,const char *salt);

此函数调用DES_fcrypt,第三个参数由一个静态数组替代,所以此函数在多线程调用下是不安全的;


void DES_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,

             long length,DES_key_schedule *schedule,DES_cblock *ivec);

DES OFB 加密;

in: 输入数据;

out:输出数据;

numbits: OFB位数;

length: 数据长度;

schedule: 密钥;

ivec: 初始化向量;


void DES_pcbc_encrypt(const unsigned char *input,unsigned char *output,

              long length,DES_key_schedule *schedule,DES_cblock *ivec,

              int enc);

Kerberos v4中用到的算法, 加密/解密时使用传播块链式模式;

input: 输入数据;

output: 输出数据;

length: 数据长度;

schedule: 密钥;

ivec: 初始化向量;

enc: 加密/解密 加密: DES_ENCRYPT , 解密: DES_DECRYPT


DES_LONG DES_quad_cksum(const unsigned char *input,DES_cblock output[],            long length,int out_count,DES_cblock *seed);

同样是Kerberos v4中用到的函数,返回输入数据的4个字节的checksum。算法迭代次数有out_count控制,可以是1,2,3,或者4此,输入时非空的8个字节;

input: 输入数据;

output: 输出数据,用于计算迭代时输出数据缓存;

length:数据长度;

out_count:迭代次数;

seed: 种子数据;

返回值为4个字节的checksum,DES_LONG类型;


int DES_random_key(DES_cblock *ret);

0.9.5版本之前,用于生成加密用的随机数,MIT 库中也使用此函数;

返回值: 1 成功, 0 失败;


void DES_set_odd_parity(DES_cblock *key);

将传入的密钥设为奇数;


int DES_check_key_parity(const_DES_cblock *key);

检查密钥的奇偶性;

0:密钥值中存在偶数;1: 密钥值为奇数;


int DES_is_weak_key(const_DES_cblock *key);

检查密钥是否为弱密钥;

1: 为弱密钥, 0: 不是弱密钥;



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:80330次
    • 积分:973
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:13篇
    • 评论:8条
    文章存档
    最新评论