① 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的倍數,處理有點麻煩據保存到字元串里,全部結束之後,一次性把解密