crypt密码加密函数的基本用法

来源:互联网 发布:smtp服务器 端口 编辑:程序博客网 时间:2024/06/07 10:13

定义函数

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

0 0
原创粉丝点击