使用替换密码进行加密

2023-12-20

我正在用字母表中的另一个字母替换字母表中的每个字母。 例如,每个“a”都会替换为“Q”,每个“b”都会替换为“W”。 我已经编写了代码来加密下面的句子。

#include<iostream>
#include<string>
#include<cctype>

using namespace std;

int main(){

    string alphabet {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
    string key      {"QWERTYUIOPasdfghjklZXCVBNMqwertyuiopASDFGHJKLzxcvbnm"};

    string original {};
    string encrypted {};

    cout<<"Enter your secret message: ";
    getline(cin ,original);
    // cout<<"Encrypting message..."<<endl;

    for(int i=0;i<original.length();i++){
        if(isalpha(original.at(i)) == 1){
            encrypted.at(i) =  key.at(alphabet.find(original.at(i)));
        }
        else
            encrypted.at(i) = original.at(i);
    }

    cout<<"Encrypted message: "<<encrypted<<endl;
}

我正在将字符串字母表中索引 i 的每个字符更改为键中具有相同索引的字符。 例如:- 如果原始字符串 =“Hello” 加密字符串应为“iTssg”

但是当我运行这个程序时我收到一个错误

输出: 输入您的秘密信息:您好 抛出“std::out_of_range”实例后调用终止 What(): basic_string::at: __n (即 0) >= this->size() (即 0)

谁能告诉我应该对此代码进行哪些更改?


Your encrypted字符串为空,因此对其进行索引.at()抛出异常。

要解决这个问题,您可以附加字符,如下所示:

 for(int i=0;i<original.length();i++){
        if(std::isalpha(original.at(i))){
           encrypted +=  key.at(alphabet.find(original.at(i)));
        }
        else 
           encrypted += original.at(i);
}

这是一个demo https://godbolt.org/z/khvP8n.

或者,您可以确保encrypted大小与original, 像这样:

encrypted = original;

然后你的循环保持不变。

另外,您可以通过使用 range-for 循环来简化循环:

for(unsigned char c : original){
        if(std::isalpha(c)){
            encrypted +=  key.at(alphabet.find(c));
        }
        else
            encrypted += c;
    }

您可以通过结合这两种方法来进一步简化:

string encrypted = original;
for (auto &c : encrypted)
  if (std::isalpha(c))
    c = key.at(alphabet.find(c));

这是一个demo https://godbolt.org/z/fK5Y7q.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用替换密码进行加密 的相关文章

随机推荐

  • 即使调整窗口大小,也保持背景图像居中

    我有一个容器 div 另一个 div 居中 里面有背景图像 当我调整浏览器窗口大小时 我希望图像保持居中 即使浏览器窗口的宽度为smaller比图像的宽度 这是一些代码 CSS wrap width 100 height 357px bac
  • Git 推送在 TOTAL 上挂起

    Git 突然开始挂起PUSH命令 我 搜索了其他问题 但解决方案不起作用 我使用的是 ubuntu 12 04 Counting objects 18 done Delta compression using up to 2 threads
  • 我可以将 Snapchat SDK (SnapKit) 与 SwiftUI 结合使用吗?

    我正在尝试整合Snapkit https docs snapchat com 使用 iOS 应用程序 但我想使用 SwiftUI 而不是 UIKit 我已经使用 Snapkit 完成了所需的设置 现在我正在尝试让 Snapchat 登录按钮
  • R:数据点与高斯函数的稳健拟合

    我需要进行一些稳健的数据拟合操作 I have bunch of x y data that I want to fit to a Gaussian http en wikipedia org wiki Gaussian function
  • 在 init 中引发异常时如何防止泄漏?

    情况是这样的 假设我有一个名为 MYFoo 的类 这是它的初始化程序 init self super init if self during initialization something goes wrong and an except
  • Android 键盘消失时白色背景

    来自不同用户的问题视频 但内容相同 https i stack imgur com 2Jzov jpg https i stack imgur com 2Jzov jpg 我的背景图像设置如下 pane background image u
  • 您是否将存储库注入域对象中?

    经过一周每天 10 多个小时学习领域驱动设计后 我开始感觉自己已经开始很好地理解它了 直到今天读到这篇文章 http blog fedecarg com 2009 03 15 domain driven design the reposit
  • Flink CsvTableSource 流式传输

    我想使用 flink 流式传输 csv 文件并执行 sql 操作 但我编写的代码只读取一次并停止 它不流式传输 提前致谢 StreamExecutionEnvironment env StreamExecutionEnvironment g
  • 在qt中动态添加小部件

    我在向 QMainWindow 添加小部件时遇到一个小问题 当我这样做时 wsk mainStatki new mainStatki this wsk mainStatki gt setGeometry 0 0 400 300 this g
  • 通过 QID 获取属性?

    我可以通过标签获取项目及其属性 SELECT distinct item itemLabel itemDescription SAMPLE DR as DR SAMPLE article as article WHERE item wdt
  • 将日期时间转换为日期

    如何将 Grails 中的日期时间字段转换为日期 而不捕获时间 我需要这样做是为了与系统日期进行比较 class Trip String name String city Date startDate Date endDate String
  • 指向 Objective-C 中指针的指针?

    我想在 Objective C 中声明一个指向指针的指针 我有一个实例变量 primaryConnection 当它发生变化时 应该动态更新它以指向局部变量 NSURLConnection primaryConnection void do
  • 如何修复 docker-machine 中过期的客户端证书

    Doing a docker machine lsa 得到了意想不到的Unable to query docker version Get https x x x x 2376 v1 15 version x509 certificate
  • HTML 5 <画布>

    这是我的代码 需要帮助使用 html 5 canvas 元素和 javascript 代码在山地景观之间绘制云的图像
  • Xcode 7.3.1 无法正确自动完成

    我有一个简单的 全新的 Objective C 项目 适用于 OSX El Capitan 10 11 4 上的 iOS 我使用的是 Cocoapods 因此我使用以下 3 个 pod 创建了 Podfile Firebase UALogg
  • 为什么 .every() 不是函数?

    我收集了所需表单元素的数组 我认为 并添加了 模糊 侦听器 var formInputs input filter required formInputs each function i this on blur function Each
  • 如何从导航抽屉启动活动?

    因此 我在这里搜索了有关导航抽屉的分配 当我从另一个人的问题的答案中找到教程时 我就这么做了 我成功地根据自己的喜好创建了导航抽屉并设计了其样式 但现在我一直在不知疲倦地寻找如何从导航抽屉启动活动 我已设法将一些代码放入 MainActiv
  • Angularjs:如何关闭评论块中的 ng-if ?

    div visible div 很容易 但是因为ngIf http docs angularjs org api ng directive ngIf甚至可以在评论中使用 结束语是什么评论区 尝试过 但运气不佳 Thanks ng if仅限于
  • Amazon S3 中的 Etag 定义已更改

    我使用 Amazon S3 进行备份已经有一段时间了 通常 上传文件后 我会检查 MD5 和匹配 以确保我已进行良好的备份 S3 具有用于给出此总和的 etag 标头 然而 当我最近上传一个大文件时 Etag 似乎不再是 md5 和 它有额
  • 使用替换密码进行加密

    我正在用字母表中的另一个字母替换字母表中的每个字母 例如 每个 a 都会替换为 Q 每个 b 都会替换为 W 我已经编写了代码来加密下面的句子 include