Openssl Des-2

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值