仅使用数组在c++中创建加密程序.不知道该如何继续
Creating an encryption program in C++ by only using arrays. Not sure how to continue
编辑注*我不是试图创建一些东西使用。我创建它是为了牢固地掌握数组在c++中的工作方式。
你好,我正在创建一个简单的加密程序。这是我的第一个程序(为了好玩),我对如何继续这个有点困惑。(我有一些代码,但是我卡住了!)
所以,首先,我将使用ROT-N加密方法。
基本上我希望用户输入一个消息,并让消息遵守这些规则:
1)移动用户输入的每个字符/数字,并向右移动8-15个字符/数字,并使其循环。我不想进入扩展字符列表。
2)如果用户输入一个小写字母,我想让它变成小写。
3)最后一位-我希望空格也被加密。程序应该指出空格在哪里。
交货。如果用户输入"Message 0600"
加密后的消息应该是"8umaaiom3933&8"
开头的"8"表示字母偏移了多少。"umaaiom3933"是加密后的消息。的,表示消息结束,最后一个"8"表示空格的位置。
我遇到的问题:
1)尝试从用户那里获取消息并将其放入数组中(消息中的每个字符成为数组中的一个字符)
2)取这些字符并为不同的值添加偏移值
这是我目前所掌握的。
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
int n = 13;
cout << n << endl;
int r = n + 255;
string mes, emes;
cout << "Please enter the message: " << endl;
getline(cin,mes);
int len = mes.length();
for(int i = 0; i <= len; i++)
{
mes[i] += n;
}
cout << mes;
return 0;
}
基本上,C字符串是一个格式为
的普通内存区域' H ' ' e ' ' l ' ' l ' ' o’"——"' w ' ' o ' ' r ' ' l ' ' d ' 0
假设我们有一个char encrypt(char ch)函数,用来加密一个char。
int i;
char *str; /* the input string */
for(i=0;str[i] != 0; i++)
str[i] = encrypt(str[i]);
但是c++标准模板库字符串有点不同。他们有更多的机械设备。虽然您可以尝试在适当的地方修改它们,但实际上您最好养成将它们视为不可变和恒定的习惯。但是你可以用push_back来创建一个。
std::string encryptstring(const std::string &plaintext)
{
size_t i; // should be int or index_t, very poor choice of name by the C++ folks
std::string answer;
for(i=0;i<plaintext.length();i++)
{
answer.push_back( encrypt(plaintext[i]));
}
return answer;
}
这是惯用的做法。c++确实允许直接访问字符串内容,但它往往不鼓励这样做。
我看了你们所有的评论。他们很有帮助,谢谢!我确实花了时间去思考和研究。我完成了这个项目。在这里!
我遇到的最大问题是我不明白在c++中字符串直接写入字符数组#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <sstream>
using namespace std;
int main()
{
srand(time(0));
string imes, omes;
int len;
int n = rand()%(15 - 8 + 1) + 8;
cout << "Please Enter a Message: " << endl;
getline (cin, imes);
std::ostringstream oss;
len = imes.length();
for (int i = 0; i < len; i++)
{
imes[i] = tolower(imes[i]);
if (imes[i] >= 'a' && imes[i] <= 'z')
{
omes += ((imes[i] - 'a' + n) % 26) + 'a';
}
if (imes[i] >= '0' && imes[i] <= '9')
{
omes += ((imes[i] - '0' + n) % 10) + '0';
}
else
if(imes[i] == ' ')
{
if (imes[i - 1] >= 'a' && imes[i - 1] <= 'z')
{
omes += ((imes[i - 1] - 'a' + 4) % 26) + 'a';
}
else
if (imes[i - 1] >= '0' && imes[i - 1] <= '9')
{
omes += ((imes[i - 1] - '0' + 4) % 10) + '0';
}
oss << '#' << i;
}
}
omes << '&' << oss.str() << endl;
cout << "The message has been encrypted and transmitted" << endl;
outdata.close();
return 0;
}
- 努力将整数转换为链表。不知道我在这里做错了什么
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 叮当不知道PTRDIFF_MAX?
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 我不知道这条线是做什么的
- 如何在不知道C++中有多少可选参数的情况下在循环中使用va_arg?
- 在不知道套接字的情况下关闭网络连接
- 如果我不知道每个列表中有多少个数字,我如何将给定数量的数字列表作为输入?
- 我不知道导致错误的原因 (C3074)
- 我不知道为什么这段代码会让核心被转储?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 循环通过网格获取温度,但不知道如何告诉程序停止循环
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 反转字符串.不知道为什么这个逻辑是错误的.C++
- C++98 中获取并继续调用当前类不知道的类方法的最简单方法是什么?
- 仅使用数组在c++中创建加密程序.不知道该如何继续