Chinaunix首页 | 论坛 | 博客
  • 博客访问: 612645
  • 博文数量: 144
  • 博客积分: 5037
  • 博客等级: 大校
  • 技术积分: 1581
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 21:49
文章存档

2010年(16)

2009年(128)

分类: LINUX

2009-07-22 18:08:06

crypt函数是将字符串用 DES 编码加密

crypt(将密码或数据编码)

相关函数 getpass

表头文件 #define _XOPEN_SOURCE

#include

定义函数 char *crypt(const char *key, const char *salt);

函数说明 crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字符组成的字符串,由a-z,A-Z,0-9,".",和"/"所组成,用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key所指的字符串不会有所更动。编码过的字符串长度为13个字符,前两个字符为参数salt代表的字符串。

返回值 返回一个指向以NULL结尾的密码字符串。

注意; 用GCC编译时需加 -lcrypt。

 

#include
#include
#include

int main()
{
 char passwd[13] = {""};
 char *key = NULL;
 char slat[2] = {""};
 key = getpass("INput first password:");
 slat[0] = key[0];
 slat[1] = key[1];
 strcpy(passwd, crypt(key, slat));
// memset(key, 0, 13);
// memset(slat, 0, 2);
 key = getpass("INput second password:");
 slat[0] = key[0];
 slat[1] = key[1];
 printf("after crypt(),1st passwd :%s\n", passwd);
 printf("after crypt(),1st passwd :%s\n", crypt(key, slat));
 return 0;
}

执行 INput first password: test

     INput second password: test

输出的将会是相同的编码

     after crypt(),1st passwd : teH0wLIpW0gyQ
     after crypt(),1st passwd : teH0wLIpW0gyQ

 

 

阅读(4049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~