竞博下载printf("请输入密钥

 专业     |      2020-03-18 15:46

根据  a=b^c   相互关系。

侠客行
#include<stdio.h>
#include<string.h>

/*****字符串基本概念******/
#include <stdio.h>
#include <string.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,len,len_one;
 char one[10000],two[10000];//one[]为密钥,two[]为明文

int m1[200];         //   明文 二进制
int s[8]={0,1,2,3,4,5,6,7};
int k3[200];         // 密钥二进制
char c[200];          //  密文
int count;

int main()
{
    char first[4] = {'l','m',''};//定义字符串 注意别忘了给字符串分配大小
    char second[9] = "你好lm";//定义字符串的另一种形式
    
    char third[] = {'x','f',''};//这个不是字符串,但是是一个简单的字符数组
    char four[] = "ascdf";
    
    char arr[2][10] = { //二维数组的定义和输出
        {'a','b','c',''},
        {'d','e','l',''}
    };
    
//    char arr[2][10] = {
竞博下载 ,//               "abcde",
//                "dfdsfdsf"
//            };
    
    int size1 = sizeof(second);//计算字节数,一个汉字有3个字节数。''也计算进去
    int size2 = strlen(second);//计算除了‘’的字节数。
    
    int size3 = sizeof(four);//计算全部的字节数
    int size4 = strlen(four);//以''来作为结束标志,且不把’‘计算进去
    
    printf("%s n",first);
    printf("%sn",second);
    
    //数组的输出是以当前数组地址为起点,直到‘‘才结束。所以如果字符数组如果没有分配''的话
    //它会继续输出其他的数组。
    printf("%sn",third);
    
    printf("%cn",four[2]);
    
    printf("%dn",size1);
    printf("%dn",size2);
    
    printf("%dn",size3);
    printf("%dn",size4);
    
    printf("ssssssn");
    for(int i=0; i<2; i++){
        printf("***n");
        for(int j=0;j<strlen(arr[i]);j++){
            printf("%cn",arr[i][j]);
        }
    }
    
竞博下载printf("请输入密钥。    return 0;
    
}

printf("请输入明文:");
gets(two);

int main(void)
{
  int i,j,n;
  char m0[100];

 

printf("请输入密钥:");
gets(one);

  int T[8];
  printf("输入密钥长度:n");
  scanf("%d",&n);
  printf("初始密钥:n");
  for(i=0;i<n;i++)
    scanf("%d",&T);
    getchar();
  if(n<8)
    {
    for(i=0;i<8;i++)
    T=T[i%n];
    printf("初始T盒:n");
    for(i=0;i<8;i++)
    printf("%d",T);
    printf("n");

/****练习******/

len_one=strlen(one);
len=strlen(two);

    }
    else
    {
    printf("输入错误,退出程序n");
     exit(1);
    }

#include <stdio.h>
#include <string.h>

    for(j=0;j<len_one;j++)
for(i=0;i<len;i++)
two[i]=one[j]^two[i];

 

int char_contains(char str[],char c)//需要定义在main函数前面
{
    int len = strlen(str);
    for (int i=0; i<len; i++)
    {
        if (str[i] == c)
        {
            printf("1n");
        }
        else {
            printf("0n");
        }
    }
    return 0;
}

printf("密文:n");
for(i=0;i<len;i++)
printf("%c",two[i]);

   void  mingwenchuli(char m0[100]);// 明文处理
   mingwenchuli(m0);
   void  miyao(int T[8]);//  密钥生成
   miyao(T);
   void jiami(int m1[200],int k3[200]); // 加密
   jiami(m1,k3);
}

void char_contains2(char str[],char c)
{
    int i = 0;
    
    while( str[i] ) {//如果字符不为''为真。
        
        if(str[i] == c) {
          printf("1n");
        } else {
          printf("0n");
        }
       
        i++;
    }
}

printf("n");

void mingwenchuli(char m0[100])            // 明文处理
{
        int i,j,r,n,temp;
    int m[200];
   printf("请输入明文字符:n");
   i=0;
   while((m0=getchar())!=n)
        i++;
       m0=;
   j=0;
   count=0;
   int z=strlen(m0);
   int y[200];
  for(i=0;i<z;i++)
   {
      r=0;
      int k=0;
      y=int(m0);
             do{
           m[r]=y%2;    //  转换 为 二进制
       y=y/2;
        m1[count]=m[r];
        r++;
        count++;
        }while(r!=7);
   for(j=count-1;j>=count-3;j--)
        {
        temp=m1[j];
        m1[j]=m1[j-6+k];
        m1[j-6+k]=temp;
        k=k+2;
        }
    }

int main()
{
    char str[] = "acdcb";
    char_contains(str,'c');
    printf("******n");
    char_contains2(str,'c');
    return 0;
}

printf("由密文还原明文:n");
for(j=0;j<len_one;j++)
for(i=0;i<len;i++)
two[i]=one[j]^two[i];

    m1[count]=;

for(i=0;i<len;i++)
printf("%c",two[i]);
printf("n");

   printf("输出明文二进制形式:n");
   for(r=0;r <count; r++)
        printf("%d",m1[r]);
        printf("n");
}
void  miyao(int T[8])
{
        int j,p;
        int i,temp,t,l;
    int k[100];
    int k2[200];
        j=0;
        for(i=0;i<8;i++)  // 密钥调度
        {
                j=(j+s+T)%8;
                temp=s;
                s=s[j];
                s[j]=temp;
        }
         printf("输出s盒数组:n");
        for(i=0;i<8;i++)
        printf("%d",s);             // 输出  S 数组
    printf("n");

return 0;
}

        i=0;
        j=0;
        for(t=0;t<(count/3+1);t++)//  伪随机调度算法
        {
                i=(i+1)%8;
                j=(j+s)%8;
                temp=s;
                s=s[j];
                s[j]=temp;
                l=(s+s[j])%8;
                k[t]=s[l];
        }
    printf("输出密钥十进制形式:n");
        for(t=0;t<(count/3+1);t++)
        printf("%d",k[t]);          // 输出 密钥  -----十进制
        printf("n");
       
  p=0;       
for(i=0;i<(count/3+1);i++)
   {
    j=0;
           do{
           k2[j]=k%2;          // 二进制转换
       k=k/2;
       k3[p]=k2[j];
        p++;
        j++;
      }while(j!=3);

      temp=k3[p-1];
      k3[p-1]=k3[p-3];
      k3[p-3]=temp;
   }
    k3[p]=;

    printf("输出密钥二进制形式:n");
   for(j=0;j<p;j++)
   printf("%d",k3[j]);
   printf("n");
}
                    
void jiami(int m1[200],int k3[200])
{
     int i,j;
   for(i=0;i<count;i++)            //异或加密
     c=m1^k3;
     printf("输出加密密文:n");
   for(i=0;i<count;i++)       
         printf("%d",c);
         printf("n");
}

竞博下载 1

#includestdio.h #includestring.h int m1[200]; // 明文 二进制 int s[8]={0,1,2,3,4,5,6,7}; int k3[200]; // 密钥二进制 char c[200]; // 密文 int count; int main(v...