| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1753 人关注过本帖
标题:谁帮我看看这段加密解密的代码哪里错了,解密的时候发现数据丢失!
取消只看楼主 加入收藏
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
结帖率:63.64%
收藏
已结贴  问题点数:20 回复次数:4 
谁帮我看看这段加密解密的代码哪里错了,解密的时候发现数据丢失!
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>


int prin_size1()
{
    FILE  *p = fopen("F:\\cs.txt", "rb");
    int size = 0;
    int ch;
    if (p != NULL)
    {
        while ((ch = getc(p)) != EOF)
        {
            size++;
        }
    }
    fclose(p);
    return size;
}


void mainasd()//分段加密
{
    FILE  *pf = fopen("F:\\cs.txt", "rb");
    FILE *pfw = fopen("F:\\cs(加密).txt", "wb");
    char str[100] = { 0 };

    if (pf == NULL || pfw == NULL)
    {
        printf("文件打开失败\n");
    }
    else
    {
        int size = 0;
        int length = 0;
        printf("请输入加密的密码:");
        scanf("%s", str);
        length = strlen(str);
        size = prin_size1();
        printf("size=%d\n", size);

        if (size%length == 0)
        {
            for (int i = 0; i < size / length; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    fputc(fgetc(pf) ^ str[j], pfw);
                }
            }
        }
        else
        {
            for (int i = 0; i < size / length - 1; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    fputc(fgetc(pf) ^ str[j], pfw);
                }
            }

            for (int i = 0; i < size%length; i++)
            {
                fputc(fgetc(pf) ^ str[i], pfw);
            }
        }

    }


    fclose(pf);
    fclose(pfw);
    system("pause");
}

void main()//分段解密
{

    FILE  *pf = fopen("F:\\cs(加密).txt", "rb");
    FILE *pfw = fopen("F:\\cs(解密).txt", "wb");
    char str[100] = { 0 };

    if (pf == NULL || pfw == NULL)
    {
        printf("文件打开失败\n");
    }
    else
    {
        int size = 0;
        int length = 0;
        printf("请输入解密的密码:");
        scanf("%s", str);
        length = strlen(str);
        size = prin_size1();

        if (size%length == 0)
        {
            for (int i = 0; i < size / length; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    fputc(fgetc(pf) ^ str[j], pfw);
                }
            }
        }
        else
        {
            for (int i = 0; i < size / length - 1; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    fputc(fgetc(pf) ^ str[j], pfw);
                }
            }

            for (int i = 0; i < size%length; i++)
            {
                fputc(fgetc(pf) ^ str[i], pfw);
            }
        }
    }


    fclose(pf);
    fclose(pfw);
    system("pause");
}
搜索更多相关主题的帖子: include return 加密 
2016-10-08 15:50
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 3楼 rjsp
上一个main  生成cs(加密) 下面main生成(解密) 肯定不一样啊!
2016-10-08 16:13
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 2楼 书生牛犊
解密后内容:
图片附件: 游客没有浏览图片的权限,请 登录注册

原始文件内容:
图片附件: 游客没有浏览图片的权限,请 登录注册

密码:libide
丢失了 最后一行  初步确定 可能是秘钥长度有关系 但是具体不清楚  调试好多遍  代码逻辑应该没错才对

[此贴子已经被作者于2016-10-8 16:22编辑过]

2016-10-08 16:20
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
cs.rar (428 Bytes)
2016-10-08 16:29
libinden71
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2015-12-3
收藏
得分:0 
回复 10楼 grmmylbs
感谢!  可以了!
2016-10-08 16:37
快速回复:谁帮我看看这段加密解密的代码哪里错了,解密的时候发现数据丢失!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037646 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved