鱼C论坛

 找回密码
 立即注册
查看: 2799|回复: 1

[学习笔记] c语言,密码生成器

[复制链接]
发表于 2020-3-12 09:23:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/******************************************************
密码生成器   
要求: 实现下面两个功能
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[100];
        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[i]!='\0')
        {
        if( (c[i] >= 'A' && c[i] <= 'D')||(c[i] >= 'a' && c[i] <= 'd') )
          {
                c[i]=c[i]+22;       
          }
        if( ( c[i] >= 'E' && c[i] <= 'Z') || ( c[i] >= 'e' && c[i] <= 'z') )
          {
                c[i]=c[i]-4;
          }
        i++;
        }
        printf("破译后为:%s\n",c);
}
void encryption(char c[])//加密
{
        int i=0;
        while(c[i]!='\0')
        {
        if( (c[i] >= 'W' && c[i] <= 'Z')||(c[i] >= 'w' && c[i] <= 'z') )
          {
                c[i]=c[i]-22;       
          }
        if( ( c[i] >= 'A' && c[i] <= 'V') || ( c[i] >= 'a' && c[i] <= 'v') )
          {
                c[i]=c[i]+4;
          }
        i++;
        }
        printf("加密后为:%s\n",c);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 10:35:43 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-12 10:46 编辑
  1. #include <stdio.h>

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

  8. char decrypt(char c)
  9. {
  10.         if(c >= 'A' && c <= 'Z') c = (c - 'A' + 22) % 26 + 'A'                 ;
  11.         else if(c >= 'a' && c <= 'z') c = (c - 'a' + 22) % 26 + 'a'            ;
  12.         return c                                                               ;
  13. }

  14. main(void)
  15. {
  16.         char c , s[3][258]                                                     ;
  17.         int k , m                                                              ;
  18.         for(m = 0 ; (c = getchar()) != '\n' ; s[0][m ++] = c , s[0][m] = '\0') ;
  19.         for(k = 0 ; k < m ; k ++ , s[1][k] = '\0' , s[2][k] = '\0') {
  20.                 s[1][k] = encrypt(s[0][k])                                     ;
  21.                 s[2][k] = decrypt(s[1][k])                                     ;
  22.         }
  23.         printf("您输入的明文是【%s】\n" , s[0])                                ;
  24.         printf("您得到的密文是【%s】\n" , s[1])                                ;
  25.         printf("您得到的明文是【%s】\n" , s[2])                                ;
  26. }
复制代码

        编译、运行实况:
  1. C:\Bin>mw
  2. Hello , World !
  3. 您输入的明文是【Hello , World !】
  4. 您得到的密文是【Lipps , Asvph !】
  5. 您得到的明文是【Hello , World !】

  6. C:\Bin>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表