定义函数 | char * crypt (const char *key,const char * salt); |
函数说明
crypt是个密码加密函数,它是基于Data Encryption Standard(DES)演算法。crypt只适用于密码的使用,不适合用于资料加密。
crypt()将参数key所指的字符串加以加密,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字符组成的字符串,由a-z、A-Z、0-9,“.”和“/”所组成,用来决定使用4096 (a-z、A-Z、0-9,“.”和“/”共64个字符,64的平方为4096)种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key 所指的字符串不会有所更动。编码过的字符串长度为13 个字符,前两个字符为参数salt代表的字符串。
返回值
返回一个指向以NULL结尾的密码字符串。
注意编译时要在末尾添加-lcrypt选项。
/**
* gcc -o crypt crypt.c -lcrypt
*/
#include <unistd.h>
#include <crypt.h>
#include <string.h>
int main(void)
{
char passwd[13];
char *key;
char slat[2];
key = getpass("Input First Password:");
slat[0] = key[0];
slat[1] = key[1];
strcpy(passwd,crypt(key,slat));
key = getpass("Input Second Password:");
slat[0] = passwd[0];
slat[1] = passwd[1];
printf("After crypt(),1st passwd :%s/n", passwd);
printf("After crypt(),2nd passwd:%s /n", crypt(key,slat));
return 0;
}
程序运行结果:(注:两次输入一样)
Input First Password:
Input Second Password:
After crypt(),1st passwd :asZvhAtTX.i7g
After crypt(),2nd passwd:asZvhAtTX.i7g
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