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;
}
總結
以上是生活随笔為你收集整理的linux下des加密命令,linux下的DES加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle类型不匹配,sys_refc
- 下一篇: 黑美人鱼女主曾遭网暴 迪士尼《小美人鱼》