【问题标题】:C++ SHA1 of string saved to file Xcode字符串的 C++ SHA1 保存到文件 Xcode
【发布时间】:2014-10-03 15:02:11
【问题描述】:

所以基本上我一直在兜圈子,试图让我的 bash 脚本在 C++ 程序中工作,我需要创建一个程序,将字符串的哈希值保存到文件中。

以下 bash 脚本可以正常工作,但我需要对其进行模糊处理以使其成为可行的选项,因为我不希望用户能够将脚本拖到文本编辑器中并查看发生了什么。

因此我需要将其编译成可执行程序来混淆代码。

我有 C++ 的基本知识,我很想在它上面放置一个带有一个文本输入框和一个“GO”按钮的界面。但是命令行可以帮助我学习这一步。

我的 bash 脚本如下:- #!/bin/bash

echo 'Enter a string :-';                  <--- need to print this on the screen
read const_var1;                           <--- read user input

temp_var1="${const_var1//[[:blank:]]/}"    <--- setup variables

hash=$(echo -n $temp_var1 | openssl sha1);  <---- calculate SHA1 hash

serial=$(echo -n $hash | tr '[:lower:]' '[:upper:]';);   <---- convert hash to UPPERCASE

a="$hash";                    <---- save hash into a 
b=${a#*= };                   <---- move to b

echo 'HASH-' >> ~/Desktop/$temp_var1\.TEXTFILE;

echo '  <string>'$b"</string>" >> ~/Desktop/$temp_var1\.TEXTFILE;  <----- save hash to text file on the desktop with a set extension.

无论如何,基本上我不想只是捆绑 bash 脚本,因为我不希望用户在窥探时能够看到内容,因为他们可以使用 bash 脚本。

我希望有足够的知识来创建一个完整的界面,您可以输入文本并创建哈希文件,但我只是不知道足够多。

所以我决定使用 C++ 编写的命令行应用程序

实现我的目标的最佳方式是什么。

我知道一点 C++,例如。

 #include <iostream>     // include input output stream
 using namespace std;    // using the standard libraries 
 int main()              // start main funktion
{
    int a;              // declare variable types an names <----- needs to be a string not int.

    cout << "ENTER STRING :-\n";  // print message to screen    
    cin >> a;                                               // read variable A from user input.

    cout << "*HASHOFSTRING*";         // HERE I DONT KNOW WHAT TO DO. i need to access openssl and calculate the HASH IN UPPER CASE
}

此时我需要将字符串的 HASH 保存到扩展名为 .whatever 的文本文件中

如您所见,以上都是错误的,我只有 C++ 的基本知识,但我学得很快。

我将永远感激帮助我解决这个问题的人,因为我一直在努力寻找一种方法来为 bash 脚本创建一个界面,但我已经放弃了,所以我需要帮助翻译我的 bash脚本。

提前多谢

【问题讨论】:

    标签: c++ xcode macos bash obfuscation


    【解决方案1】:

    我真的不明白为什么要在这里进行混淆。 真正决心了解正在发生的事情的用户也可以使用 c++ 编译的程序来做到这一点,尽管成本更高。

    此外,我不明白您为什么使用openssl sha1 而不仅仅是sha1sum。 此外,如果你打算使用 c++,你可以很容易地在那里重写 bash 脚本,而不用调用它。

    首先是在 c++ 中使用 Boost.Uuid 和 #include &lt;boost/uuid/sha1.hpp&gt; 进行 sha1 计算。 网上有一些例子,比如this一段代码。

    如果您仍想直接运行 bash 脚本,那么您可以使用 Boost.Process(不是 Boost 的一部分,尽管名称如此)或 Qt 中的 QProcess。 您将运行脚本并提交用户输入。

    【讨论】:

    • 我如何实现提升?我下载了这个库,但我找不到 sha1.hpp,我也不知道如果我找到了我会用它做什么。
    • 这是基本的 c++ 和 c++ 库用法,实际上超出了这里的范围。特别是因为周围有很多教程可以比我做的更好地解释它。尽管如此,我认为仅仅为这个小案例学习 c++ 很可能比使用更容易。 c++ 本身就是一个怪物。
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多