免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1851 | 回复: 5
打印 上一主题 下一主题

[C] 加密程序,有兴趣的朋友提点建议! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-04 14:16 |只看该作者 |倒序浏览
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>

#define SALT "abc"

struct userInfo {
        char *username;
        char *passwd;
};

struct userInfo defaultInfo = {
        "zhangsan",
        "ab2IzmxtmU/5g"
};

int check(void)
{
        char buf[100];
        int ret;
        int val = 0;

        write(1, "Username:", 9);
        ret = read(0, buf, 99);
        if (buf[ret] == '\n')
                buf[ret -1] = '\0';
        else
                buf[ret -1] = '\0';
        if (strcmp(buf, defaultInfo.username) == 0)
        {       
                write(1, "Password:", 9);
                ret = read(0, buf, 99);
                if (buf[ret] == '\n')
                        buf[ret - 1] = '\0';
                else
                        buf[ret - 1] = '\0';
                if (strcmp((char *)crypt(buf, SALT),
                                defaultInfo.passwd) == 0)
                {
                        val = 1;
                }
                else
                {
                        val = 0;
                }
        }
        else
        {
                val = 0;
        }
        return val;
               
}
int main(void)
{
        int i, flag = 0;

        for (i = 0; i < 3; i++)
        {
                if (check() == 0)
                {
                        flag = 0;
                        continue;
                }
                else
                {
                        flag = 1;
                        break;
                }

        }
        if (flag == 1)
        {
                printf("check ok!\n");

        }else
        {
                printf("check NG!\n");
        }
}

用户名:zhangsan
密码: zhangsan
验证通过!

但我输入zhangsanaa 验证也通过
crypt加密有些出入,感到费解,请各位支援!

论坛徽章:
0
2 [报告]
发表于 2010-10-04 18:00 |只看该作者
crypt 这个函数只对 key 的前面8个字符感兴趣。。 ”zhangsan“ “zhangsanaa"  在crypt 看起来是一样的。

论坛徽章:
0
3 [报告]
发表于 2010-10-04 18:46 |只看该作者
不看 man,该打。

CRYPT(3)

       By taking the lowest 7 bits of each of the first  eight  characters  of
       the  key, a 56-bit key is obtained.  This 56-bit key is used to encrypt
       repeatedly a constant  string  (usually  a  string  consisting  of  all
       zeros).   The returned value points to the encrypted password, a series
       of 13 printable ASCII characters (the first  two  characters  represent
       the salt itself).  The return value points to static data whose content
       is overwritten by each call.

论坛徽章:
0
4 [报告]
发表于 2010-10-04 19:05 |只看该作者
if (buf[ret-1] == '\n' && buf[ret-2] == '\r')
                buf[ret-2] = '\0';
        else if (buf[ret-1] == '\n')
                buf[ret-1] = '\0';

程序中这样写,加字符串结尾会不会好点儿~

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
5 [报告]
发表于 2010-10-05 12:40 |只看该作者
加密的目的是啥?只是这样跟用明码比较没啥区别

论坛徽章:
0
6 [报告]
发表于 2010-10-05 13:56 |只看该作者
回复 3# langue


    实在不好意思, 本人初学者,下不为例!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP