c語言加密演算法
#include<stdio.h>
#include<string.h>
#definePASSWORD3
intmain()
{
charc;
FILE*source=fopen("source.txt","r");//源解密時將該源文件換成加密後的文件
FILE*result=fopen("result.txt","w");//處理結果
while((c=fgetc(source))!=EOF)//加密
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+PASSWORD)%26;
fputc(c,result);
}
/*
while((c=fgetc(source))!=EOF)//解密解密時將加密部分注釋掉
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+26-PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+26-PASSWORD)%26;
fputc(c,result);
}
*/
close(source);
close(result);
system("pause");
return0;
}
這是之前寫的,可以看看
『貳』 C語言加密演算法
#include<stdio.h>
intconstN=10;
//將方陣a[N][N]第row行循環左移m位
voidRowLeftn(chara[][N],intn,introw,intm){
inti,j,t;
if(row<0||row>n-1)return;
for(i=0;i<m;++i){
t=a[row][0];
for(j=0;j<n-1;++j)
a[row][j]=a[row][j+1];
a[row][n-1]=t;
}
}
//將方陣a[N][N]第col列循環上移m位
voidColUpn(chara[][N],intn,intcol,intm){
inti,j,t;
if(col<0||col>n-1)return;
for(i=0;i<m;++i){
t=a[0][col];
for(j=0;j<n-1;++j)
a[j][col]=a[j+1][col];
a[n-1][col]=t;
}
}
intmain(){
chartxt[N][N];
inta[N],b[N],i,j,n;
while(scanf("%d",&n)==1&&n>0){
fflush(stdin);
for(i=0;i<n;++i){
for(j=0;j<n;++j)
scanf("%c",&txt[i][j]);
}
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%c",txt[i][j]);
printf(" ");
}
for(i=0;i<n;++i)scanf("%d",&a[i]);
for(i=0;i<n;++i)scanf("%d",&b[i]);
for(i=0;i<n;++i)RowLeftn(txt,n,i,a[i]);
for(i=0;i<n;++i)ColUpn(txt,n,i,b[i]);
for(i=0;i<n;++i){
for(j=0;j<n;++j)
printf("%c",txt[i][j]);
}
printf(" ");
}
return0;
}
『叄』 求一個加密演算法,有C語言常式給分
既然求簡單,我幫你寫了個加解密演算法相同的。
#include "assert.h"
#include "stdlib.h"
#include "string.h"
char *Encode(char *sSrc)
{
assert(NULL != sSrc);
char *p = NULL;
int iSrcLen = strlen(sSrc);
p = (char *)malloc((iSrcLen + 1) * sizeof(char));
strcpy(p, sSrc);
p[iSrcLen] = '\0';
int i = 0;
while (i < iSrcLen)
{
if (p[i] >= '0' && p[i] <= '9')
{
p[i] += 5;
p[i] = '0' + (p[i] - '0') % 10;
}
++i;
}
return p;
}
// 測試代碼
int main()
{
char *p = Encode("123");
printf("Encode:%s\n", p); // 加密結果678
char *q = Encode(p);
printf("Decode:%s\n", q); // 解密結果123
free(p);
free(q);
return 0;
}
『肆』 用C語言寫Kaesar加密演算法
void Kaesar(char *p)
{
int i = 0;
while( p[i] )
{
if(p[i] = 32)
{
printf("%d\t",3*27+5);
i ++;
}
else if(p[i] >= 'a' && p[i] <= 'z')
{
printf("%d\t",3*(p[i]-'a'+1)+5);
i ++;
}
else if(p[i] >= 'A' && p[i] <= 'Z')
{
printf("%d\t",3*(p[i]-'Z'+1)+5);
i ++;
}
else
i++;
}
}
隨便寫了下,未驗證,傳入的是字元串指針,密文C直接列印到屏幕了,看看能不能調通。主函數什麼的自己填。
『伍』 用c語言設計一個簡單地加密算,解密演算法,並說明其中的原理
恰巧這兩天剛看的一種思路,很簡單的加密解密演算法,我說一下吧。
演算法原理很簡單,假設你的原密碼是A,用A與數B按位異或後得到C,C就是加密後的密碼,用C再與數B按位異或後能得回A。即(A異或B)異或B=A。用C實現很簡單的。
這就相當於,你用原密碼A和特定數字B產生加密密碼C,別人拿到這個加密的密碼C,如果不知道特定的數字B,他是無法解密得到原密碼A的。
對於密碼是數字的情況可以用下面的代碼:
#include <stdio.h>
#define BIRTHDAY 19880314
int main()
{
long a, b;
scanf("%ld", &a);
printf("原密碼:%ld\n", a);
b = BIRTHDAY;
a ^= b;
printf("加密密碼:%ld\n", a);
a ^= b; printf("解密密碼:%ld\n", a);
return 0;
}
如果密碼是字元串的話,最簡單的加密演算法就是對每個字元重新映射,只要加密解密雙方共同遵守同一個映射規則就行啦。
『陸』 用C語言實現DES加密演算法!
l iceEncryptText 文本加密解密
http://dl.icese.net/src.php?f=iceEncryptText.src.rar
『柒』 C語言 加密演算法
#include<stdio.h>
#include<string.h>
#defineMAX_LEN1024
#defineMAX_KEY_LEN10
/*key必須是1-9之間的數字*/
/*擁有K個字元的Key,包含且僅包含1-K*/
intCheckKey(char*key)
{
inti,check[MAX_KEY_LEN]={0};
intmax=strlen(key);
intkeyVal;
for(i=0;i<max;i++)
{
keyVal=key[i]-'0';
if(keyVal>max||keyVal<1)
return0;
if(check[keyVal]==1)
return0;
else
check[keyVal]=1;
}
return1;
}
intEncrypt(char*word,char*key,char*secretWord)
{
inti,start;
intnLenWord=strlen(word);
intnLenKey=strlen(key);
intindex[MAX_KEY_LEN];
if(nLenWord%nLenKey!=0)
{
printf("明文的位數不是密鑰位數的整數倍! ");
return0;
}
for(i=0;i<nLenKey;i++)
{
index[i]=key[i]-'0'-1;
}
/*START關鍵代碼*/
start=0;
while(start<nLenWord)
{
for(i=0;i<nLenKey;i++)
{
secretWord[start+i]=word[start+index[i]];
}
start+=nLenKey;
}
secretWord[nLenWord]='