c语言字符串密码
char
ch,name[30],over;
FILE
*fp;
printf("请输入要加密的文件名(正确的做法是:先把解密的数不知道,你想要什么样的加密算法。
AES不错。不过AES是对16个字节长度加密,要是不是16的倍数,处理有点麻烦据保存到字符串里,全部结束之后,一次性把解密
Ⅱ C语言字符串加密问题
楼主,你的问题在于没有对数组 r 初始化(而s的输出没有问题),这样输出的时候找不到结束符,所以就一直输出下去,因此出现了乱码。
提出两种修改方法,这两种方法都可以避免你的问题:
1、char r[10000]={0}; 后就可以了。这样你输入的字符串不管是多长,到时后面的都是结束符。
2、上面不对r进行初始化,而修改下面
for(i=0;s[i]!='\0';i++)
{
if((s[i]<='Z')&&(s[i]>='A'))
r[i]=s[i]+3;
else if((s[i]<='z')&&(s[i]>='a'))
r[i]=s[i]-4;
else
r[i]=s[i];
}
r[i]='\0'; //在r的后面加上结束符就可以了
Ⅲ C语言 字符串加密
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(void)
{
charc[100];
intk;
intlen,i,temp;
scanf("%s",c);
scanf("%d",&k);
len=(int)strlen(c);
k=k%26;
for(i=0;i<len;i++)
{
if(c[i]>='a'&&c[i]<='z')
{
if(c[i]+k>'z')
{
temp='z'-c[i];
temp=k-temp-1;
c[i]='a'+temp;
}
else
{
c[i]+=k;
}
}
elseif(c[i]>='A'&&c[i]<='Z')
{
if(c[i]+k>'Z')
{
temp='Z'-c[i];
temp=k-temp-1;
c[i]='A'+temp;
}
else
{
c[i]+=k;
}
}
else
{
/*donothing*/
}
}
printf("%s ",c);
return0;
}
Ⅳ 用C语言对字符串加密
没看懂是什么意思?输出的是后几位的字母及数字,到底输出多少?加密算法是什么??
Ⅳ c语言 字符的加密
在加密的时候,加入超过Z ,你就去取余数(ASII码) ,但是在解密的时候,你减去加密数字,可能会小余A的(ASII),加个判断,小于0就加上A的(ASII)。具体实现方法你就自己去编程。我提供了思路。
Ⅵ c语言密码
用什么替换?
暂时用小写加移位取?比如A加密成c,B加密成d,就是大写变小写后位置发生变化。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void EncodeString(char *str,int key)
{
int length,i;//length为传入字符串长度,i用作循环计数器
length=strlen(str);
for(i=0;i<length;i++)//对字符串中的每个字符依次进行加密
{
if(isupper(str[i]))//对大写字母加密
{
str[i]+=key%26;
if(str[i]>'Z')
{
str[i]-=26;
}
else if(str[i]<'A')
{
str[i]+=26;
}
}
else if(islower(str[i]))//对小写字母加密
{
if(str[i]+key%26<128){
str[i]+=key%26;
if(str[i]>'z')
{
str[i]-=26;
}
else if(str[i]<'a')
{
str[i]+=26;
}
}
else{str[i]-=26;str[i]+=key%26;}
}
}
}
void main()
{
char arr[50],buffer;//arr[50]用来接收字符串信息,buffer用来接收缓冲区中的回车
int key;//key为加密秘钥
printf("This program encodes messages using a cyclic cipher.
");
printf("To stop, enter 0 as the key.
");
while(1)//程序一直运行,直到输入密钥0为止
{
printf("Enter the key: ");
scanf("%d",&key);
scanf("%c",&buffer);
if(0==key)
{
break;//输入密钥为0,则退出程序
}
printf("Enter a message: ");
scanf("%s",arr);
scanf("%c",&buffer);
EncodeString(arr,key);
printf("Encoded message: %s
",arr);
}
}
Ⅶ c语言,字符串密码登录程序
这样修改,是否符合原来的题意?
Ⅷ C语言:字符串加密的问题
问题不小,你表面用的是C
但是,好多地方不符合C的语法
,,比如:
for
(int
i=0;
str[i]
!=
'\0';
i++)
还有,就是你好像没有弄清楚
,你要做什么似的,有好多无用的东西,
就像你的函数里的,key
,虽然你提到key了,但是你根本没有使用key,你只是使用45来进行加密,,还有就是一个文件
的大小,是不确定的,你用一个100个字符的字符串来存,有点那个不安全了,,如果稍长一点就会出问题,产生运行时错误。其实你这个加密和解密是一个可逆过程,用一个函数,就可以了,具体你想要的也不是太明白,就给你弄了一个简单一点加密和解密程序
,输入输出不是同一个文件
,不知道是不是你想要的。
#include
#include
#include
void
Decrypt()
{
char
fname[FILENAME_MAX];
char
fname2[FILENAME_MAX];
FILE*
fp;
FILE*
fp1;
int
key;
char
c;
printf("输入要加/解密文件的路径:\n");
scanf("%s",
fname);
printf("请输入密钥:\n");
scanf("%d",&key);
strcpy(fname2,fname);
strcat(fname2,".txt");
if(
(fp
=
fopen(fname,"r+"))
==
NULL)
{
printf("error");
exit(1);
}
if(
(fp1
=
fopen(fname2,"w+"))
==
NULL)
{
printf("error");
exit(1);
}
while(
(c
=
fgetc(fp))
!=
EOF)
{
c
=
c^key;
fputc(c,fp1);
}
fcloseall();
}
int
main()
{
Decrypt();
return
0;
}
如果想看一些好一点的加密算法
,我这里有一些,联系我发给你
,,
Ⅸ C语言字符串加密
'Z' 对应的ascii值为90
'A'对应的ascii值为65
若s1[1]为 'a' 则对应的ascii值为97
那么算出来s2='Z'-(s1[i]-'A')+A-1 = 90 -(97-65)+65-1=122
‘z’对应的ascii值为122 所以这个时候的s2为 z
Ⅹ c语言编写:将用户输入的字符串翻译成密码串:规则如下
a b c d e f g h i j
例子里输入ab,cd
a是第1个字符,那么换成a后面第1个,也就是b
b是第2个字符,那么换成b后面第2个,也就是d
到这里都没错
c是第4个字符,那么换成后面第4个,也就是g,为什么题目示例是h???
#include <stdio.h>
#include <ctype.h>
int main()
{
int i=0;
char str[1001];
fgets(str,1000,stdin);
while(str[i]){
if(islower(str[i]))
str[i]=97+(str[i]+i-96)%26;
else if(isupper(str[i]))
str[i]=65+(str[i]+i-64)%26;
i++;
}
puts(str);
return 0;
}