鱼C论坛

 找回密码
 立即注册
查看: 2379|回复: 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[3][258]                                                     ;
        int k , m                                                              ;
        for(m = 0 ; (c = getchar()) != '\n' ; s[0][m ++] = c , s[0][m] = '\0') ;
        for(k = 0 ; k < m ; k ++ , s[1][k] = '\0' , s[2][k] = '\0') {
                s[1][k] = encrypt(s[0][k])                                     ;
                s[2][k] = decrypt(s[1][k])                                     ;
        }
        printf("您输入的明文是【%s】\n" , s[0])                                ;
        printf("您得到的密文是【%s】\n" , s[1])                                ;
        printf("您得到的明文是【%s】\n" , s[2])                                ;
}
        编译、运行实况:
C:\Bin>mw
Hello , World !
您输入的明文是【Hello , World !】
您得到的密文是【Lipps , Asvph !】
您得到的明文是【Hello , World !】

C:\Bin>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-27 08:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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