‘壹’ 用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(); //密文
}