关于密码学的小项目
C++ : Mini Project on Cryptography
我需要使用带有异或加密的c++加密和解密文件。我需要知道在哪里我可以为它做一个GUI。
是否有办法做到这一点(可能通过c++单独)?
如何加密文件有一个非常简单的答案。该脚本使用异或加密对文件进行加密。对文件进行第二次加密以解密。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void encrypt (string &key,string &data){
float percent;
for (int i = 0;i < data.size();i++){
percent = (100*i)/key.size(); //progress of encryption
data[i] = data.c_str()[i]^key[i%key.size()];
if (percent < 100){
cout << percent << "%r"; //outputs percent, r makes
}else{ //cout to overwrite the
cout<< "100%r"; //last line.
}
}
}
int main()
{
string data;
string key = "This_is_the_key";
ifstream in ("File",ios::binary); // this input stream opens the
// the file and ...
data.reserve (1000);
in >> data; // ... reads the data in it.
in.close();
encrypt(key,data);
ofstream out("File",ios::binary);//opens the output stream and ...
out << data; //... writes encrypted data to file.
out.close();
return 0;
}
这行代码是加密发生的地方:
data[i] = data.c_str()[i]^key[i%key.size()];
它单独加密每个字节。每个字节都用一个在加密过程中变化的字符进行加密因为:
key[i%key.size()]
但是有很多加密方法,例如你可以在每个字节上加1(加密),在每个字节上减1(解密):
//Encryption
for (int i = 0;i < data.size();i++){
data[i] = data.c_str()[i]+1;
}
//Decryption
for (int i = 0;i < data.size();i++){
data[i] = data.c_str()[i]-1;
}
我认为显示进度不是很有用,因为它太快了。
如果你真的想做一个GUI,我会推荐Visual Studio。
希望对你有帮助。
相关文章:
- 如何将我的小程序转换为用于项目的函数?
- 欧拉项目#8:C++错误的答案(为一个小的炮制输入给出正确的答案)
- QT访问表小部件从单独的线程项目
- 未找到"png.h"文件,当包含在Qt小部件项目中时
- C++简单的暴力项目密码输入方法
- C 的最小集合在C项目中可重复使用,该项目可重复使用(几乎?)零胶代码
- 特征错误:请使用密码保护您的最小值
- QT gui 项目不会缩小到 ft 到它们的父小部件
- Qt Creator 不会构建一个最小的项目 [-c 行 0: git]
- 添加表格小部件项目的问题
- 将项目小部件宽度(列表内容)调整为父QListWidget宽度
- Boost序列化:XCode 5项目中的链接器错误,由CMake生成(带最小完整示例)
- std::terminate() 链接器错误在一个小的 clang 项目上
- 如何在Qt小工具项目中更新图形视图(Qt Creator)
- C中用于密码学的快速伪随机数生成器
- 构建最小的Qt控制台项目失败,出现神秘的链接器错误LNK2001:未解析的外部符号
- 一个小而有充分评论的项目,展示了C++的最佳实践
- 关于密码学的小项目
- Qt -事件监听器的树小部件项目单击
- 列表视图-资源管理器如何在小图标视图中获得相同大小的所有项目