c语言设计密码检测程序?

c语言设计密码检测程序?,第1张

#include <stdioh>
#define UC (1U<<1) // upper case
#define LC (1U<<2) // lower case
#define NUM (1U<<3) // 0-9
#define ALL (UC|LC|NUM)
int check(const char pass1[], const char pass2[])
{
const char p = &pass1[0];
unsigned int flag = 0;

if (strlen(pass1) < 6 || strlen(pass1) > 8)
{
printf("password length is 6 to 8\n");
return 1;
}

if (strcmp(pass1, pass2))
{
printf("the tow passwords are diffrence\n");
return 2;
}

while (p)
{
if (p >= 'a' && p <= 'z') flag |= LC;
else if (p >= 'A' && p <= 'Z') flag |= UC;
else if (p >= '0' && p <= '9') flag |= NUM;
else
{
printf("in valid charactor: %c\n", p);
return 3;
}
++p;
}

if (flag == ALL) return 0;

if ((flag & UC) == 0)
{
printf("lack of uppercase\n");
}

if ((flag & LC) == 0)
{
printf("lack of lowercase\n");
}

if ((flag & NUM) == 0)
{
printf("lack of number\n");
}
return -1;
}
int main(int argc, char argv[])
{
char pass1[100];
char pass2[100];

do {
printf("input password:");
scanf("%s", pass1);
printf("repeat password:");
scanf("%s", pass2);
} while (check(pass1, pass2) != 0);

return 0;
}

#include<stdioh>
#define
N
8
void
main()
{
int
code,count,i,temp;
int
key[N];
printf("请输入密码:");
scanf("%d",&code);
//各位交换
i=0;
count=0;
while(code!=0)
{
key[i]=code%10;
code
/=
10;
i++;
count++;
}
//各位
加5,并对其取余
for(i=0;i<count;i++)
{
key[i]
+=
5;
key[i]
%=
10;
}
//数字第一位与最后一位互换
temp
=
key[0];
key[0]
=
key[count-1];
key[count-1]
=
temp;
for(i=0;i<count;i++)
{
printf("%d
",key[i]);
}
}
//晕你是北大青鸟的吧我昨天刚做了这个项目刚好发给你了

unsigned char encrypt(unsigned char psw, int enc) {
int sum = 0, i;
if (enc) {
for (i = 0; i < 6; i++) {
psw[i] -= 15;
sum += psw[i];
}
psw[6] = (unsigned char) sum;
psw[7] = 0;
    }
else {
for (i = 0; i < 6; i++) {
sum += psw[i];
psw[i] += 15;
}
if ((unsigned char)sum != psw[6]) {
printf("Bad password\n");
psw[0] = 0;
return psw;
}
else {
psw[6] = 0;
}
}
for (i = 0; i < 3;i++) {
unsigned char t = psw[i];
psw[i] = psw[5-i];
psw[5-i] = t;
}
return psw;
}
int main()
{
unsigned char psw[128];
scanf("%s", psw);
printf("encode to:%s\n", encrypt(psw, 1));
printf("decode to:%s\n", encrypt(psw, 0));
return 0;
}

1、用一个字符数组来存密码
再用一个字符数组接收你的输入,然后用strcmp
来比较,如果返回0则密码是正确的
2、例程:

#include "stdioh"
#include "stringh"
int main()
{
       char mima[100]="YuanShi888";
       char input[100]={0};
       printf("请输入密码:");
        gets(input);
       if(strcmp(mima,input)==0)
            printf("恭喜你,密码正确!\n");
       else
            printf("对不起,密码输入错误!\n");
  
}

我没注意只要小写,我写的是大小写都可以的,另外附送输入验证。

#include <stdioh>
#include <stringh>
int main()
{
    char str[]="00000",str2[]="00000",p=str,p2=str2;
    printf("输入5个字母:");
    while(p!=0)
    {
        scanf("%c",p);
        if(p=='\n')
            continue;
        if(p<'A'||(p>'Z'&&p<'a') || p>'z') //输入验证,必须是字母
        {
            printf("只能输入字母,请重新输入\n");
            p=str;
            p2=str2;
            fflush(stdin);//输入有错重新输入前清空缓冲区。fflush属于c扩展函数,正常使用没问题,如需在linux ggc上使用,考虑多次调用getchar函数来清空
        }
        else
        {
            p2=(p)+4;
            if(p2>90 && p2<97)   //大写字母加4,最大位不超出
                p2='A'+(p2-90)-1;
            if(p2>122)            //小写字母加4,最大位不超出
                p2='a'+(p2-122)-1;
            p2++;
            p++;
        }
    }
    printf("原字符串为:%s\n加密后的字符串为:%s\n",str,str2);
    return 0;
}

加密和解密算法是程序编制中的重要一环。试想,如果我们平时使用的腾讯QQ、支付宝支付密码、今日头条账号密码那么轻易就被别人的话,很多不可以预料的事情就会发生!
在现实生活中,我们遇到过太多QQ密码被的情况,有的朋友QQ被盗之后,骗子利用朋友间信任骗取钱财的事情屡见不鲜。支付宝也曾出现过支付宝账户被恶意的事件,对用户利益造成了严重损害!这些在技术上都指向了同一相关问题:软件加密算法的强壮程度。今天,小编利用C语言来简单实现一种加密方法。下面是源代码。
需要说明:程序利用了ascii码值的按照一定规律变换实现加密,对于解密过程,则是加密的逆过程。下面是程序的运行结果。
4190阅读
搜索
编程免费课程300节
初学编程100个代码
java自学一般要学多久
5秒破解excel密码
python必背100源代码
40岁零基础学编程

加密:
#include<stdioh>
#include<stdlibh>
#include<conioh>
#include<stringh>
void dofile(char in_fname,char pwd,char out_fname);/对文件进行加密的具体函数/
void main(int argc,char argv[])/定义main()函数的命令行参数/
{
char in_fname[30];/用户输入的要加密的文件名/
char out_fname[30];
char pwd[8];/用来保存密码/
if(argc!=4){/容错处理/
printf("\nIn-fname:\n");
gets(in_fname);/得到要加密的文件名/
printf("Password:\n");
gets(pwd);/得到密码/
printf("Out-file:\n");
gets(out_fname);/得到加密后你要的文件名/
dofile(in_fname,pwd,out_fname);
}
else{/如果命令行参数正确,便直接运行程序/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
dofile(in_fname,pwd,out_fname);
}
}
/加密子函数开始/
void dofile(char in_fname,char pwd,char out_file)
{
FILE fp1,fp2;
register char ch;
int j=0;
int j0=0;
fp1=fopen(in_fname,"rb");
if(fp1==NULL){
printf("cannot open in-file\n");
exit(1);/如果不能打开要加密的文件,便退出程序/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL){
printf("cannot open or create out-file\n");
exit(1);/如果不能建立加密后的文件,便退出/
}
while(pwd[++j0]);
ch=fgetc(fp1);
/加密算法开始/
while(!feof(fp1)){
fputc(ch^pwd[j>=j0j=0:j++],fp2);/异或后写入fp2文件/
ch=fgetc(fp1);
}
fclose(fp1);/关闭源文件/
fclose(fp2);/关闭目标文件/
}
/程序结束/

#include
#include
main()
{
intkey;
charch;
printf("\n请输入密钥:");
scanf("%d",&key);
printf("得到对应明文如下:");
while((ch=getchar())!='\r')
(ch+key)>122putchar(ch-122+33+key):
((ch+key)<33putchar(ch+122+key):putchar(ch+key));
}
输入输出如下:
请输入密钥:20addse
得到对应明文如下:uxxy
你先输入一个任意的整数,如20,然后在键盘上输入一段任意的字符如addse
按回车键结束,就会得到结果如:uxxy
下面是另一组输入输出:
请输入密钥:35asjRYIRER!@#$^^&
得到对应明文如下:+=4u#luhuDcFG((MI-
具体是如何加密,你应该能看懂,就是用一个三目运算符:控制。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12744734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存