所以基本上我一直在试图让我的bash脚本在C ++程序中工作,我需要基本上创建一个程序,将字符串的哈希值保存到文件中。
以下bash脚本工作正常但我需要对其进行模糊处理以使其成为可行的选项,因为我不希望用户能够将脚本拖动到文本编辑器中并查看发生的情况。
因此,我需要将其编译成可执行程序来混淆代码。我有一个基本的C ++知识,我很乐意用一个文本输入框和一个" GO"按钮。但命令行可以帮助我学习这一步。
我的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脚本。
非常感谢提前
答案 0 :(得分:1)
我真的不明白为什么要在这里做混淆。 用户真正决定了解正在发生的事情也可以通过c ++编译程序来实现,尽管成本较高。
此外,我不明白您使用openssl sha1
而不仅仅是sha1sum
的原因。
此外,如果你打算使用c ++,你可以很容易地重写bash脚本,而不是调用它。
一个开始是使用Boost.Uuid和#include <boost/uuid/sha1.hpp>
的c ++中的sha1计算。
互联网上有一些例子,如this段代码。
如果您仍想直接运行bash脚本,那么您可以使用Boost.Process(不是Boost的一部分,尽管名称)或来自Qt的QProcess。 您将运行该脚本并提交用户输入。