linux下des加密命令,linux下的DES加密



linux下的DES加密

des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED 都是用于DES快速加密

调用格式

#include

int ecb_crypt(char *key, char *data, unsigned datalen,

unsigned mode);

int cbc_crypt(char *key, char *data, unsigned datalen,

unsigned mode, char *ivec);

void des_setparity(char *key);

int DES_FAILED(int status);

描述

ecb_crypt()  和  cbc_crypt()遵循NBS DES。这些加密函数比crypt更快、更加通用。如果DES硬件有效,那么这些加密函数也可以使用它们。

ecb_crypt()工作于ECB模式(电子密码本模式,把要加密的数据分成一块块独立的数据 然后再进行加密,并行),加密每一个独立数据块。 cbc_crypt()工作于CBC模式(密码块链接模式,把数据分成多个块,每个块加密前与前一个块的密文进行亦或操作,然后再加密,串行)。CBC比ECB更安全

使用说明

参数key是指8字节的密钥,使用之前需对密钥进行奇偶性设置des_setparity(char *key)。

参数data指需要加密或者解密的源数据

参数datalen指源数据长度,必须是8的倍数,不是8倍数,则datalen += 8 - datalen%8等其它操作让其变为8的倍数

参数mode 可以用OR来制定多个模式,包括加密DES_ENCRYPT,解密DES_DECRYPT。软件加密或硬件加密是DES_HW , DES_SW。如果指定了DES_HW ,但是相应的硬件不支持,你那么默认会使用软件加密并且返回DESERR_NOHWDEVICE。

返回值

DESERR_NONE         成功

DESERR_NOHWDEVICE   加密成功,但是使用的是软件加密而不是硬件加密

DESERR_HWERROR      硬件或者驱动出现错误

DESERR_BADPARAM     参数错误

linux中使用DES加密解密

key要使用des_setparity

int main()

{

int b_loop, b_len;

long long b_begin, b_end;

char b_key[100] = {0}, * b_test_data = NULL;

sprintf(b_key, "%s", "12345678");

b_test_data = (char *)malloc(100);

memset(b_test_data, 0 , 100);

b_len = sprintf(b_test_data, "%s", "abcdefghijklmnopqrstuvwxyz");

if(b_len % 8)

{

b_len += 8 - b_len % 8;

}

b_begin = getSystemTime();

ecb_crypt(b_key, b_test_data, b_len, DES_ENCRYPT);

b_end = getSystemTime();

printf("time = %lu, val = %s\n", b_end - b_begin, b_test_data);

ecb_crypt(b_key, b_test_data, b_len, DES_DECRYPT);

printf("data = %s\n", b_test_data);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值