A. [高分]C語言對字元串的加密和解密
char
ch,name[30],over;
FILE
*fp;
printf("請輸入要加密的文件名(正確的做法是:先把解密的數不知道,你想要什麼樣的加密演算法。
AES不錯。不過AES是對16個位元組長度加密,要是不是16的倍數,處理有點麻煩據保存到字元串里,全部結束之後,一次性把解密
B. C語言如何進行字元加密
進行字元加密是很多種的。
數據加密的基本過程就是對原來為明文的文件或數據按某種演算法進行處理,使其成為不可讀的一段代碼為「密文」,使其只能在輸入相應的密鑰之後才能顯示出原容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。
C. c語言 字元串加密,請問要怎樣做到連續輸入多組數據
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
usingnamespacestd;
char*ex(chara[],intn){//替換函數
inti=0;
while(a[i]){
if(a[i]>='a'&&a[i]<='z')a[i]=(a[i]+n-'a')%26;
elseif(a[i]>='A'&&a[i]<='Z')a[i]=(a[i]+n-'A')%26;
++i;
}
returna;
}
intmain(){
chara[31];
intk,T;
printf("T=");
scanf("%d",&T);
while(T--){
printf("str=");
scanf("%s",a);
printf("k=");
scanf("%d",&k);
printf("%s
",ex(a,k));
printf("
");
}
return0;
}
D. c語言字元加密
題目沒有講清楚,是對所有字元加密,還是只對英文字母加密?數字字元要不要加密?移位的規則怎麼樣都沒有說清楚。
下面的程序是只對英文字母進行移位加密,並且統一都是移位4位。
#include
#include
int main()
{ char s[200];
int i,j;
gets(s);
for(i=0;s[i];i++)
if(isalpha(s[i]))
s[i]=(s[i]%32+3)%26+'A'+isupper(s[i])*32;
puts(s);
return 0;
}
E. C語言,字元串加密
沒怎麼理解,隨便寫一個
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
voidw(charname[10],chars[100],intn)
{
if(n>0)
n-=1;
FILE*fp;
fp=fopen(name,"w");
inti;
for(i=0;s[i];i++)
s[i]+=n;
fprintf(fp,"%s",s);
fclose(fp);
}
voidr(charname[10],intn)
{
if(n>0)
n-=1;
chars[100];
inti;
FILE*fp;
fp=fopen(name,"r");
fscanf(fp,"%s",s);
for(i=0;s[i];i++)
printf("%c",s[i]-n);
printf(" ");
}
intmain()
{
intn,i,j,m;
chars[100];
scanf("%d",&n);
scanf("%s",s);
w("1.txt",s,n);
scanf("%d",&m);
r("1.txt",m);
return0;
}
F. 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的後面加上結束符就可以了
G. 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;
}
H. 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;
}
如果想看一些好一點的加密演算法
,我這里有一些,聯系我發給你
,,
I. C語言字元串加密 多實例
string i;
int k;
cin>>i>>k;
for (int q=0;q<i.length();q++)
{
if (i[q]>='a'&& i[q]<='z')
i[q]=char((i[q]-'a'+k)%26+'a');
else
if (i[q]>='A'&&i[q]<='Z')
i[q]=char((i[q]-'A'+k)%26+'A');
}
J. C語言實現將字元串進行加密處理,每個字元的加密規則是,將其轉換為對應的ASCII碼加3後對應 的字元輸出
輸入的是英文字元的話,直接加3就可以,但是如果是中文字元的話,如果直接高位和地位加3也可以,但是解密的時候就有一個不確定的存在,因為中文字元的ascii編碼是有0xfe這樣的存在,加上3的話就到時候還原就變得不確定。所以如果是中文字元加密的話,應該把兩個ascii碼轉合並為兩個位元組無符號類型,然後再加3。