| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:伪随机数文件加密法的问题
只看楼主 加入收藏
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
结帖率:89.66%
收藏
已结贴  问题点数:20 回复次数:2 
伪随机数文件加密法的问题
程序代码:
#include <stdio.h>
#include <stdlib.h>
union
{
int value;
struct
{
  char first;
  char second;
}fran;
}num;
main()
{  
FILE *fp,*name2;         /* name2位加密存放的文件 */
int i,t,len,k1,k2,k3,k4,k5;
float j;
char name1,buf[60000];   /* name1位用户输入的要进行加密的文件 */
printf("\n input filename that you want to lock or open:");
scanf("%s",name1);
if((fp=fopen(name1,"rb"))==NULL)      /* 以只读的方式打开一个二进制文件 */
  {
   printf("File cannot be opened\n");
   exit(1);
  }
else
   printf("File opened for encrypt\n");
j=filelength(name1);
printf("\ninput key1:");
gets(k1);
printf("\ninput key2:");
gets(k2);
printf("\ninput key3:");
gets(k3); 
srand(k1);
for(i=0;i<k2;i++)
{
  k4=rand();
}
k5=(k3+k2)/2;
for(i=0;i<j;i++)
{
  num.value=rand();
  if(num.fran.first<=33)
   num.fran.first=num.fran.first+33;
  buf[i]=num.fran.first^buf[i];        /* 进行异或运算 */
}
fopen(name2,"wb");   /* 以只写的方式建立一个二进制文件存放加密后的文件 */
fputs(buf,name2);             
printf("\nFile is already encrypted");
fclose(name1);      /* 关闭文件 */
fclose(name2);
}
下面这部分的代码我有点不懂,哪位大侠解答下!
程序代码:
srand(k1); 
for(i=0;i<k2;i++)
{


 k4=rand();
}
k5=(k3+k2)/2;
for(i=0;i<j;i++)
{
  num.value=rand();
  if(num.fran.first<=33)
   num.fran.first=num.fran.first+33
搜索更多相关主题的帖子: 伪随机数 文件 
2010-11-22 21:00
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

#define BUF 128

void clrbuf(void);

union
{
    int value;
    struct
    {
        char first;
        char second;
    }fran;
}num;

int
main()
{ 

    FILE *fp,*fp2;
    char* name2="d:\\encode.txt";         /* name2位加密存放的文件 */
    int i,len,k1,k2,k3,k4,k5;
    char c;
    char name1[BUF],buf[60000];   /* name1位用户输入的要进行加密的文件 */

    printf("\n input filename that you want to lock or open:");
    scanf("%s",name1);
    if((fp=fopen(name1,"rb"))==NULL)      /* 以只读的方式打开一个二进制文件 */
    {
        printf("File cannot be opened\n");
        exit(1);
    }
    else
        printf("File opened for encrypt\n");

    len=0;
    while((c=fgetc(fp))!=EOF)
        ++len;
    clrbuf();
    printf("\ninput key1:");
    k1=getchar();
    clrbuf();
    printf("\ninput key2:");
    k2=getchar();
    clrbuf();
    printf("\ninput key3:");
    k3=getchar();
    srand(k1);
    for(i=0;i<k2;i++)
    {
        k4=rand();
    }
    k5=(k3+k2)/2;
    for(i=0;i<len;i++)
    {
        num.value=rand();
        if(num.fran.first<=33)
            num.fran.first=num.fran.first+33;
        buf[i]=num.fran.first^buf[i];        /* 进行异或运算 */
    }
    fp2=fopen(name2,"wb");   /* 以只写的方式建立一个二进制文件存放加密后的文件 */
    fputs(buf,fp2);           

    printf("\nFile is already encrypted\n");
    fclose(fp);      /* 关闭文件 */
    fclose(fp2);

return 0;
}

void clrbuf(void)
{
    int c;

    while((c=getchar())!='\n')
        ;
}
楼主你的代码哪来的,那样的代码也能编译通过了?
上面是一阵好改后的结果
2010-11-22 21:58
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
回复 2楼 xiaomarn
程序代码:
 srand(k1);
    for(i=0;i<k2;i++)
    {
        k4=rand();
    }
    k5=(k3+k2)/2;
    for(i=0;i<len;i++)
    {
        num.value=rand();
        if(num.fran.first<=33)
            num.fran.first=num.fran.first+33;
这是什么意识啊,能解释下吗?

付出终将有回报!Ibelieve!
2010-11-22 22:28
快速回复:伪随机数文件加密法的问题
数据加载中...
 
   



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

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