第八章 数据加密函数
来源:互联网 发布:易语言表格源码 编辑:程序博客网 时间:2024/06/08 10:20
第八章 数据加密函数
第八章 数据加密函数相关头文件:#include <unistd.h>crypt :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 <unistd.h> main() { char passwd[13]; char *key; char salt[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)); }getpass : char *getpass(const char *prompt); 取得一密码输入; getpass()会显示参数prompt所指向的字符串,然后从/dev/tty中读取所输入的密码, 若无法从/dev/tty中读取则会转从标准输入设备中读取密码。所输入的密码长度限制 在128个这符,包含结束字符NULL,超过长度的字符及换行符('\n')将会被忽略。在输 入密码时getpass()会关闭字符回应,并忽略一些信号如CTRL-C或CTRL-Z所产生的信号。 返回一个指向以NULL结尾的密码字符串; 为系统安全考虑,一般在使用getpass()输入密码后,该密码最好尽快处理完毕,然后 将密码字符清除; #include <unistd.h> main() { char passwd[] = "password"; char *ptr; ptr = getpass("Input password"); if ( !strcmp(passwd, ptr)) { printf("Correct\n"); } else { printf("Incorrect\n"); } }
阅读全文