c++ - 如何绕过散列(Crypto++ 库)中的 \x1a 字符(或类似字符)?
问题描述
我对编程比较陌生,这个项目是我在自己的时间做的最早的项目之一。
我基本上是在尝试制作一个登录注册程序,对用户输入的数据进行哈希处理并将其存储在文本文件中。登录选项基本上访问该文本文件并将其与用户输入的数据进行比较,以查看是否存在任何此类用户名和密码组合。注册选项基本上将用户数据写入文件。我对这个项目的了解并不多,因为我想在程序中添加更多的“功能”,这样它会更好地工作。但是,目前,我在从登录选项的文本文件中读取数据时遇到了一个小问题。基本上,存储在文本文件中的哈希密码之一包含\x1a
作为其哈希的一部分。我认为程序总是在读取这个子控制字符时结束,因为它到达文件末尾。我想知道的是如何避免具有这种字符的哈希。
我正在使用 crypto++ 库(我不太熟悉它)。
哈希函数:
void hashingFunc(string originalPass, string& hashedPass) {
using namespace CryptoPP;
SHA3_256 hash;
hash.Update((const byte*)originalPass.data(), originalPass.size());
encryptedPass.resize(hash.DigestSize());
hash.Final((byte*)&encryptedPass[0]);
}
读取功能:
void readFileFunc(fstream& outputFile, const string FILE_NAME, string userNameHash, string passWordHash) {
string localUserHash;
string localPassHash;
if (!outputFile) {
cout << "File containing login information failed to open. Please try again." << endl;
cout << "If the problem persists, check file name and location." << endl;
cout << "File Name in the system: " << FILE_NAME << endl;
}
else {
while (outputFile) {
if (outputFile.eof())
break;
getline(outputFile, localUserHash);
getline(outputFile, localPassHash);
if (localUserHash == userNameHash) {
if (localPassHash == passWordHash) {
cout << "Successful Login!" << endl;
}
}
}
}
}
解决方案
推荐阅读
- reactjs - 反应路由器 useparams 以未定义的形式返回
- c++ - 在遵守严格的别名规则的同时使用 reinterpret_cast
- android - 为什么我的合并布局在 LinearLayout 中出现两次?
- python - Python 电报机器人错误
- sql - SQL查询以获取具有正余额的固定长度连续日期的第一个日期
- php - 编辑 Wordpress 配置文件自定义字段前端
- reactjs - Create React App 项目中的 CSS 模块无法正常工作
- regex - 减少格式化字符串中的冗长(Stanza)
- csv - 由于特殊字符导致的雪花 csv 分隔符问题
- css - 如何定位深度嵌套的标题元素