Diammmm 发表于 2020-3-12 09:23:30

c语言,密码生成器

/******************************************************
密码生成器   
要求: 实现下面两个功能
1)输入原文译成密码
2)输入密码译成原文
规律:A-->e,a-->e,..W-->A,w-->a,..Z-->D,z-->d
缺点:两个英文字符之间不要用空格隔开用-
******************************************************/
#include<stdio.h>
void encryption(char c[]);//加密
void decipher(char c[]);//破译
void main()
{
        int j=0;
        char c;
        while(1)
       {       
                printf("输入0退出,输入1选择加密,输入2选择破译:\n");
                scanf("%d",&j);
                if(!j)break;
                else if(1==j||2==j)
                {
                        if(1==j)
                        {
                                printf("请输入要加密的字符串:\n");
                                scanf("%s",&c);
                                encryption(c);//加密
                        }
                        if(2==j)
                        {   
                                printf("请输入要破译的字符串:\n");
                                scanf("%s",&c);
                                decipher(c);//破译
                        }
                }
                else
                {
                        printf("输入错误,请重新输入:\n");
                }
       }
}
void decipher(char c[])//破译       
{
        int i=0;
        while(c!='\0')
        {
        if( (c >= 'A' && c <= 'D')||(c >= 'a' && c <= 'd') )
          {
                c=c+22;       
          }
        if( ( c >= 'E' && c <= 'Z') || ( c >= 'e' && c <= 'z') )
          {
                c=c-4;
          }
        i++;
        }
        printf("破译后为:%s\n",c);
}
void encryption(char c[])//加密
{
        int i=0;
        while(c!='\0')
        {
        if( (c >= 'W' && c <= 'Z')||(c >= 'w' && c <= 'z') )
          {
                c=c-22;       
          }
        if( ( c >= 'A' && c <= 'V') || ( c >= 'a' && c <= 'v') )
          {
                c=c+4;
          }
        i++;
        }
        printf("加密后为:%s\n",c);
}

jackz007 发表于 2020-3-12 10:35:43

本帖最后由 jackz007 于 2020-3-12 10:46 编辑

#include <stdio.h>

char encrypt(char c)
{
      if(c >= 'A' && c <= 'Z') c = (c - 'A' + 4) % 26 + 'A'                  ;
      else if(c >= 'a' && c <= 'z') c = (c - 'a' + 4) % 26 + 'a'             ;
      return c                                                               ;
}

char decrypt(char c)
{
      if(c >= 'A' && c <= 'Z') c = (c - 'A' + 22) % 26 + 'A'               ;
      else if(c >= 'a' && c <= 'z') c = (c - 'a' + 22) % 26 + 'a'            ;
      return c                                                               ;
}

main(void)
{
      char c , s                                                   ;
      int k , m                                                            ;
      for(m = 0 ; (c = getchar()) != '\n' ; s = c , s = '\0') ;
      for(k = 0 ; k < m ; k ++ , s = '\0' , s = '\0') {
                s = encrypt(s)                                     ;
                s = decrypt(s)                                     ;
      }
      printf("您输入的明文是【%s】\n" , s)                              ;
      printf("您得到的密文是【%s】\n" , s)                              ;
      printf("您得到的明文是【%s】\n" , s)                              ;
}
      编译、运行实况:
C:\Bin>mw
Hello , World !
您输入的明文是【Hello , World !】
您得到的密文是【Lipps , Asvph !】
您得到的明文是【Hello , World !】

C:\Bin>
页: [1]
查看完整版本: c语言,密码生成器