『壹』 用C語言加密 字母信息加密字母按字母表,進行對調,大小寫不變(a-z,b-y,c-x,…) 急求答案!
//VC++6.0下進行編譯
#include <stdio.h>
#define N 25
void jiami(char namea[256])
{
FILE *fp_jiami,*fp_file2;
char c;
fp_jiami=fopen(namea,"rb");
fp_file2=fopen("file2.plg","wb");
while(EOF!=(fscanf(fp_jiami,"%c",&c)))
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{
c=c+N;
if (!((c>='A'&&c<='Z')||(c>='a'&&c<='z')))c=c-26;
if(c>='a'&&c<='z')c=c-32;
}
fprintf(fp_file2,"%c",c);
}
fclose(fp_file2);
fclose(fp_jiami);
}
void jiemi(char en_name[256])
{
FILE *fp_jiemi,*fp_file3;
char c;
fp_jiemi=fopen(en_name,"rb");
fp_file3=fopen("file3.plg","wb");
while(EOF!=(fscanf(fp_jiemi,"%c",&c)))
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{
c=c-N;
if (!((c>='A'&&c<='Z')||(c>='a'&&c<='z')))c=c+26;
if(c>='A'&&c<='Z')c=c+32;
}
fprintf(fp_file3,"%c",c);
}
fclose(fp_file3);
fclose(fp_jiemi);
}
int main()
{
char name[256];
int n;
printf("輸入你要操作的TXT文本:");
gets(name);
printf("\n請選擇需要進行的操作:\n");
printf(" 1:加密 2:解密 \n");
printf("輸入你的選擇:");
scanf("%d",&n);
switch(n) {
case 1:{jiami(name);printf("\t加密成功!!\n\n");
break;}
case 2:{jiemi(name);printf("\t解密成功!!\n\n");
break;}
default:{printf("輸入操作不存在!");}
}
return 0;
}
『貳』 該怎麼解決,delphi實現DES位元組流加密
在 CnPack 提供的源代碼包里,提供了 des 加解密單元文件,提供了以下四個功能函數:
function DESEncryptStr(Str, Key: AnsiString): AnsiString;
{* 傳入明文與加密 Key,DES 加密返回密文,
註:由於密文可能含有擴展 ASCII 字元,因此在 DELPHI 2009 或以上版本中,請用
AnsiString 類型的變數接收返回值,以避免出現多餘的 Unicode 轉換而導致解密出錯}
function DESDecryptStr(Str, Key: AnsiString): AnsiString;
{* 傳入密文與加密 Key,DES 解密返回明文}
function DESEncryptStrToHex(Str, Key: AnsiString): AnsiString;
{* 傳入明文與加密 Key,DES 加密返回轉換成十六進制的密文}
function DESDecryptStrFromHex(StrHex, Key: AnsiString): AnsiString;
{* 傳入十六進制的密文與加密 Key,DES 解密返回明文}
『叄』 java題:編寫一個加密程序,對用戶輸入的字元串加密後輸出。加密的方法是將每個字元映射成字母表中的對稱
publicStringgetPass(Stringstr){
Stringstr="";
for(inti=0;i<str.length();i++){
charch=str.charAt(i);//得到單個字元ch;
if(ch>64&&ch<91){//成立=>ch是大寫字母
str+=(char)(155-ch);//大寫對應字母之和:155eg:'A'+'Z'=155
}elseif(ch>96&&ch<123){//成立則ch是小寫字母
str+=(char)(219-ch);//小寫對應字母之和:219如:'a'+'z'=219
}else{
str="";//若進入此處,則說明str中有非字母字元
returnstr;//直接退出
}
}
returnstr;//返回str的值;
}
樓主估計是新手,此處程序鄙人就不進一步優化。(可優化)
『肆』 用C語言編程:對一行電文進行加密,每個字元轉換為字母表中循環右移的第三的字母,如:a-b,b-e.....大寫字
#include<stdio.h>
voidchange(chars[]){
inti;
for(i=0;s[i];++i){
if(s[i]>='a'&&s[i]<='z')
s[i]=(s[i]+2-'a')%26+'a';
elseif(s[i]>='A'&&s[i]<='Z')
s[i]=(s[i]+2-'A')%26+'A';
}
}
intmain(){
chars[256];
printf("輸入一個字元串:");
scanf("%s",s);
change(s);
printf("轉換後為:%s
",s);
return0;
}
『伍』 C語言 簡單對字母進行加密
1、在我們的編輯頁面輸入以下代碼。
『陸』 用C語言實現任意字元串的加密,其中,字母用凱撒加密方法加密,非字母不變
我盡量用注釋闡述了思路,希望可以幫到你!!
#include<stdio.h>
#include<string.h>
#define N 80 //可加密字元串最大長度
char plaintext[N]={0}; //明文,輸入時輸入字元,參與運算時強制轉換成整數
int ciphertext[N]={0}; //密文,保存成整數,輸出時強制轉換成字元
int k; //後(右)移位數,相當於密鑰
void getPlainText() //獲得明文字元串
{
printf("請輸入明文:");
scanf("%s",plaintext);
printf("\n");
}
void getLength() //獲取後(右)移位數(密鑰)
{
printf("請輸入後移的位數:");
scanf("%d",&k);
k%=26; //因為字母只有26個,所以超過26相當於重復
}
void Caesar_cipher() //凱撒加密,本程序採用的是字母循環後(右)移
{
unsigned int i;
for(i=0;i<strlen(plaintext);i++)
{
//兩個bool類型的變數是為了判斷字元是否是字母(包括大寫和小寫)
bool flag1=plaintext[i]>='a'&&plaintext[i]<='z';
bool flag2=plaintext[i]>='A'&&plaintext[i]<='Z';
if(flag1||flag2){ //如果是字母,加密
ciphertext[i]=(int)plaintext[i]+k; //字母在字母表中後(右)移K位
if(ciphertext[i]>(int)'z'){ //保證是循環後(右)移
ciphertext[i]-=26;
}
}
else //非字母字元,不做處理,原樣保存
ciphertext[i]=(int)plaintext[i];
}
}
void printCipherText() //輸出加密後的密文
{
unsigned int i;
printf("\n加密後的密文是:");
for(i=0;i<strlen(plaintext);i++) //把參與計算後是整數強制轉換成對應的字元
printf("%c",(char)ciphertext[i]);
printf("\n");
}
void main()
{
getPlainText(); //明文
getLength(); //後(右)移位數
Caesar_cipher(); //凱撒加密
printCipherText(); //密文
}