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加密相关推荐

  1. Linux下的tree命令 --Linux下目录树查看

    Linux下的tree命令 --Linux下目录树查看 有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好 这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的, ...

  2. Linux下python的命令,linux下python相关命令

    若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) # 安装依赖环 ...

  3. linux里面查找替换命令,LINUX 查找替换命令 总结

    find /var/ -name "*.php" > /home/tmp 在/var/目录下查找 所有以.php后缀结尾的文件  结果很多,就 > 输出结果到/home ...

  4. linux系统vi替换命令,linux:vi 替换命令

    转自:http://www.cnblogs.com/afant/archive/2009/03/11/1408745.html :s/^.*$/\L&/100 ##将100行内的小写转换成大写 ...

  5. linux关闭后台运行命令,linux后台运行、关闭、查看后台任务常用命令

    一.& 加在一个命令的最后,可以把这个命令放到后台执行,如: [root@bqh-01 ~]# watch -n 3 "sh 1.sh"  #每3s在后台执行一次1.sh脚 ...

  6. linux安装DNS服务命令,linux配置dns服务器配置命令

    linux配置dns服务器配置命令 Linux系统的DNS服务器怎么配置,配置命令有哪些?下面跟yjbys小编一起来了解一下吧! 一.实验目的 熟悉Linux系统中DNS服务器的配置方法.理解配置过程 ...

  7. 没法再详细的说说Linux压缩与归档命令(下-2)

    6 7-Zip:7z文件压缩与解密 7-Zip(7-Zip官方网站:http://www.7-zip.org/)是一个开源的数据压缩程序,主要用在Windows.类Unix操作系统.7-Zip主体在G ...

  8. linux安装DNS服务命令,Linux下的安装和配置DNS服务器

    Linux下的安装和配置DNS服务器 发布时间:2008-09-08 17:03:00   作者:佚名   我要评论 在Linux操作系统中使用BIND (Berkeley Internet Name ...

  9. linux系统怎么ping命令,Linux系统下的ping命令的使用

    学习计算机网络的时候,常用的网络诊断工具比如ping.ipconfig命令这些都是我们经常要使用的,主要是用来监测网络是否通顺,相信你在Windows中已经是有经常使用过,并且也可以在dos系统下面可 ...

  10. linux中C编译命令,linux下命令行下编译c程式

    linux下命令行下编译c程式 2008-02-23 05:41:36来源:互联网 阅读 () C 是任何版本的UNIX上的系统语言. C 在过去的二十年中有了很大的发展. 在80年代末期美国国家标准 ...

最新文章

  1. 奠定现代计算机发展的人物和思想,计算机基础第一部分.ppt
  2. 智能循迹小车_智能机器人之循迹小车——循迹原理
  3. FPGA设计的常用思想与技巧(转)
  4. 使用Java查询Sql Server数据库
  5. how to use webpart container in kentico
  6. 理解云原生--开发模型、架构原则、主要技术
  7. 腾讯Q3财报看点:净利近10年来首次下滑 为硬科技持续“烧钱”
  8. 网创第一件事是要找一起奋斗的人
  9. 学了python能干啥举例-1 行Python代码能干哪些事,这 13个你知道吗?
  10. enq: HW - contention等待事件
  11. nexus3 测试操作
  12. 一张图了解软件测试流程
  13. EAccessViolation 地址访问错误
  14. 1.100个房产测量常见问题  2. 现有的商用房产测绘软件 3.问题_拔剑-浆糊的传说_新浪博客...
  15. IT行业含金量较高的证书汇总
  16. VMware中Linux虚拟机root密码重置
  17. 不用传感器的指南针android app,Android 利用方向传感器实现指南针具体步骤
  18. 图片转pdf怎么转?怎么在电脑上把图片转成pdf?
  19. linux查看系统所有变量,Linux系统各指标命令
  20. 考试系统自动答题,你还在为不及格烦恼么?

热门文章

  1. CRM order lock will trigger product read API
  2. SAP UI5 GM6 require sap.ui.core.Core
  3. SAP UI5 extend debug
  4. CRM里把用户分配给一个position的执行调试
  5. Field EXP_REVENUE
  6. How is syntax error in Vue detected - Vue的语法错误检查机制介绍
  7. linux 怎么重装libaprutil,Apache安装出错_cannot install `libaprutil-1.la' to a directory
  8. python工程技巧_重点来了!掌握这些Python技巧,将给你节省大量时间
  9. proxy connect abort处理方法_Java代理设计模式(Proxy)的几种具体实现
  10. 叉积 微分 恒等式_考研真题分章解析 | 第二章 导数与微分