① C++ string字符串如何加密
C++ string类重载了[]运算符,因此,可以象数组一样方便的引用string中的每一个元素,进行数据修改。如,字符串简单加密方法,A-B, B-C, C-D。。。Z-A的实现代码如下:
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
strings;
cin>>s;//输入字符串
for(inti=0;i<s.length();i++)//遍历字符串s.length()为输入串的长度
{
if(s[i]>='A'&&s[i]<'Z')//处理A-Y
s[i]+=1;
elseif(s[i]=='Z')//处理Z
s[i]='A';
//非大写字符,不处理
}
cout<<s<<endl;//输出字符串
return0;
}
运行结果:
AsDfGXyZ
BsEfHYyA
② C语言编程问题:从键盘上输入一个字符串按照以下规则对其加密。
#include<stdio.h>
#include<string.h>
intmain(){
inti;
chars[80];
printf("请输入字符串:");
while(scanf("%s",s)==1)
{
printf("加密前:%s ",s);
i=0;//i定义在此处便于第二次运行
while(s[i])
{if(s[i]>='A'&&s[i]<='Z')
s[i]=(s[i]-'A'+3)%26+'A';
elseif(s[i]>='a'&&s[i]<='z')
s[i]=(s[i]-'a'+3)%26+'a';
++i;}
printf("加密后:%s ",s);
printf("请输入字符串[<Ctrl+Z><ENTER>结束程序]:");
}
return0;
}
③ 用c语言把字符串加密,包括字母和数字,向后偏移三位,需要运用到函数。帮忙改一下错啊。。
#include<stdio.h>
void sec(char str[]);
void main()
{
char str[10];
int i=0;
printf("input 10 chars:\n");
for(i=0;i<10;i++)
scanf("%c",&str[i]);//<————这里输入的时候你写的不对!
sec(str);
for(i=0;i<10;i++)
printf("%c",str[i]);
}
void sec(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
char x=str[i];
if((x>='a'&&x<='z')||(x>='A'&&x<='Z')||(x>='0'&&x<='9'))
x=x+3;
str[i]=x;//<————————这里要把转换完的x再赋给str[i]
}
}
④ 关于字符串加密的问题
可以通过映射来实现
把所有能用到的字放到MAP里,然后把密码做字符串截取,6位一组
把每组的值和MAP里做映射,就能找到加密前的值
这是最简单的方法了
⑤ 电文(字符串)加密,形成密码文(字符串)的问题
以前做过完全一样的啊,给,已经编译运行确认:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct node
{
char ch;
struct node *forward; /*链接下一节点*/
struct node *backward; /*链接前一节点*/
} CODE;
char *decode(char *ocode, int key)
{
char *ncode;
int length, count,i;
CODE *loop , *p;
length = strlen(ocode);
loop= (CODE*)malloc(length*sizeof(CODE)); /*动态分配密文环*/
for(i=0;i<length-1;i++)
{
loop[i].forward = &loop[i+1];
loop[i].backward =&loop[i-1];
}
loop[0].backward =&loop[length-1];
loop[0].forward = &loop[1];
loop[length-1].forward = loop;
loop[length-1].backward = &loop[length-2];
for(p=loop, i=0; i<length;i++)
{
/*产生密文链表*/
for(count=1;count<key; count++)
p= p->forward;
p->ch =*ocode++;
p->backward->forward =p->forward;
p->forward->backward = p->backward;
p = p->forward;
}
ncode = (char*)malloc((length+1)*sizeof(char));
for(i=0;i<length;i++)
ncode[i] =loop[i].ch;
ncode[length] = '\0';
return ncode;
}
void main()
{
char ocode[256];
int key, num=0;
printf("输入原文字符串: ");
while(num<255&&(ocode[num++]=getchar())!='\n');
ocode[(num==255)?num:num-1] ='\0';
do
{
printf("输入加密密钥:");
scanf("%d",&key);
} while(key<=1);
printf("电文的密码是: %s\n",decode(ocode,key));
}
⑥ 对字符串加密 偏移3位 c语言,帮忙看看有什么错啊
输出用%s的话,用不着0到10循环,一个printf("%s",a);就行了
%s表示输入字符串,那么a[10]只能接收9个字符。因为还有一个隐含的字符串结束符。
偏移那段不能0到10循环,而应该判断是否已处理到了字符串结尾。
#include<stdio.h>
main()
{
char a[10];
int i ;
printf("input 9 chars:\n");
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
{
if('x'<=a[i]&&a[i]<='z'||'X'<=a[i]&&a[i]<='Z')
a[i]-=23;
else
a[i]+=3;
}
printf("%s",a);
}
⑦ vb中如何对字符串进行加密和解密(有汉字的)
函数没问题, 你的调用方法有问题:
Private Sub Form_Load()
Dim s As String
s = UserCode("1234中文")
Debug.Print s '这里显示出来的就是一串?
Debug.Print UserDeCode(s) '这里显示出来的是加密前的原文了
End
End Sub
⑧ 在程序中如何将字符串常量进行加密
首先,要对这个常量字符串进行加密。
然后,加密用的密码(密钥)需要进行特殊处理。
比如:要保护字符串123456,用密钥13579进行加密。
密钥13579的16进制数组形式为:{0x31, 0x33, 0x35, 0x37, 0x39, 0x00}
你可以对这个数组进行数据干扰。比如:高位乱填数据(因为你知道是3),低位都加/减某数值:
变为了:{ 0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00 }
你在代码中对每一位进行恢复:
*p &= 0x0F, *p |= 0x30, *p -= 0x02,如此得到你的原始密码:13579;
反汇编看到的你的密钥串为:0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00。
不知道你思路的话,只能碰运气猜啦。
在上面两种干扰方法基础上,你甚至还可以把高低位调换,这样就又加了一层干扰信息。
别人想破解也得好好猜一会了。
⑨ [高分]C语言对字符串的加密和解密
char
ch,name[30],over;
FILE
*fp;
printf("请输入要加密的文件名(正确的做法是:先把解密的数不知道,你想要什么样的加密算法。
AES不错。不过AES是对16个字节长度加密,要是不是16的倍数,处理有点麻烦据保存到字符串里,全部结束之后,一次性把解密