首页 > 试题广场 >

编制程序,将输入的一行字符以加密的形式输出, 然后将其解密,

[问答题]
编制程序,将输入的一行字符以加密的形式输出, 然后将其解密,解密的字符序列与输入的正文进行比较, 吻合时输出解密的正文, 否则输出解密失败。
加密时,将每个字符的 ASCII码依次反复加上“4962873”中的数字,并在32(' ')~122('z') 之间做模运算。解密与加密的顺序相反。例如,对于输入正文“the result of 3 and 2 is not 8”, 则运行结果为:
xqk口zlvyuzqn口6$jtf(9#m! &pw #
the result of  3  and 2  is not 8

推荐
//-----------------------------------
//EX0305.cpp
//加密与解密
//-----------------------------------
#include<iostream>
#include<string>
using namespace std;
//-----------------------------------
const char key[]="4962873";
//-----------------------------------
string encode(string& str){
  string result(str);
  for(int i=0; i<str.length(); i++){
    result[i] += key[i%7]-'0';
    if(result[i]>'z')
      result[i] -= 91;   //'z'-' '+1=122-32+1=91;
  }
  return result;
}//----------------------------------
string double(string& str){
  string result(str);
  for(int i=0; i<str.length(); i++){
    result[i] -= key[i%7]-'0';
    if(result[i]>' ')
      result[i] += 91;   //'z'-' '+1=122-32+1=91;
  }
  return result;
}//----------------------------------
int main(){
  string s;
  getline(cin, s);
  string t = encode(s)
  cout<<t<<"\n";
  cout<<(s==decode(t) ? s+"\n" : string("decode failed\n"));
}//----------------------------------
运行结果为:
xqk"zlvyuz"wm#7)gpl'5$ry"vvw$A
.the result of  3  and 2  is not 8



发表于 2018-05-07 20:33:50 回复(1)
//Ex0305.cpp
//加密与解密
#include<iostream>
#include<string>
using namespace std;
const char key[]="4962873";//
string encode(string& str){
    string result(str);
    for(int i=0;i<str.length();i++){
    result[i] += key[i%7]-'0';//加密工作是 对原字符串中的每个字符先做 加周期性整数的工作,即加上密钥字符再减'0'字符,然后再判断其是否做取模的调整操作
    if(result[i]>'z')
        result[i] -= 91;
    }
    return result;
}
string decode(string& str){
    string result(str);//???
    for(int i=0;i<str.length();i++){
        result[i] -= key[i%7]-'0';
        if(result[i]<' ')
            result[i] += 91;
    }
    return result;
}
int main(){
    string s;
    getline(cin,s); // 可以录入空格
    string t = encode(s);
    cout<<t<<"\n";
}

发表于 2021-01-23 11:20:47 回复(0)