在编译的 C 或 C++ 代码中加密密码

2024-04-05

我知道如何在终端中使用 GCC 和 CC 编译 C 和 C++ 源文件,但是我想知道编译后在这些文件中包含密码是否安全。

例如..我检查用户输入的某个密码,例如 123,但似乎已编译的 C/C++ 程序可能会被反编译。

无论如何,有没有办法编译 C/C++ 源文件,同时保持源完全隐藏。 如果没有,任何人都可以提供一个加密输入的小示例,然后检查密码,例如:(SHA1,MD5)


不,您无法安全地将密码包含在源文件中。可执行文件中的字符串是纯文本形式,任何拥有文本编辑器的人都可以轻松查看您的密码。

一个不太安全但会践踏某些人的方法是存储加密的字符串。所以,基本上:

enc = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"

bool check() {
    pass = getPassFromUser();
    encpass = myHashingFunction(pass);
    return pass == encpass;
}

这会阻止一些人,但实际上并没有更安全,对于程序集黑客来说,用另一个具有已知明文值的 sha256 编码字符串替换可执行文件中的“enc”字符串相对简单。

即使您使用单独的身份验证服务器,设置一个伪造的身份验证服务器并欺骗您的程序连接到该伪造的身份验证服务器也不困难。

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

在编译的 C 或 C++ 代码中加密密码 的相关文章

随机推荐

  • 响应式 SVG 图像蒙版

    我使用 SVG 作为图像蒙版 但我不知道如何在调整页面大小时使 SVG 改变其大小 当我更改窗口大小时 SVG 内的图像会调整大小 但 SVG 不会 关于如何解决这个问题有什么想法吗 这是 SVG 代码
  • 避免在 Swift 中使用连续的“if let”声明[重复]

    这个问题在这里已经有答案了 在斯威夫特我用过if let声明来检查我的对象是否不是nil if let obj optionalObj 但有时候 我不得不面对连续的if let声明 if let obj optionalObj if let
  • 支持多个Python模块版本(具有相同版本的Python)

    我环顾四周 但找不到我的问题的明确答案 我非常合理地需要支持同一 Python 模块的 N 个版本 如果它们存储在同一个包 目录中 则它们必须具有唯一的名称 如下例所示 some package my module 1 0 py some
  • 通过 JavaScript 正则表达式获取 url 路径名的一部分

    我有以下网址 https www example com article f 1 test article 我需要通过 JavaScript 纯 JavaScript 从 url 中获取 1 部分 我知道我可以用 location path
  • knockoutjs 中的滑动动作绑定

    我在我的应用程序中使用淘汰赛作为主要框架 它必须支持平板电脑和移动设备 由于框架是基于绑定处理程序构建的 我想知道如何实现对操作 如滑动和其他特定于设备的操作 的自定义绑定 或者也许有类似的事情完成 可能为时已晚 但这里有一个库 将触摸绑定
  • DB2 WITH 语句可以用作 UPDATE 或 MERGE 的一部分吗?

    我需要更新数据库表中的一些行 如何识别要更新的行涉及一系列复杂的语句 我设法将它们归结为一系列WITH语句 现在我有了正确的数据值 我需要更新表 由于我设法使用WITH语句获取这些值 因此我希望在更新 合并中使用它 一个简化的示例如下 wi
  • 如何更改 Ubuntu 中的文件权限 [重复]

    这个问题在这里已经有答案了 在 Ubuntu 中 我想更改整个文件夹及其所有子文件夹的文件权限以供任何人读 写 我努力了sudo chmod 666 var www and sudo chmod 755 var www没有成功 update
  • Facebook 重置“在 Facebook 上分享”链接的缓存

    我刚刚更新了我们网站的的开放图协议 我刚刚注意到 每当我分享一些链接时 旧的是 Facebook 正在解析的 但是 对于我运行的那些链接debugger https developers facebook com tools debug他们
  • 仅当 command1 在 cmd windows shell 中成功时才运行 command2

    我们如何组合 cmd shell 语言中的命令 以便仅在第一个命令成功完成时才执行第二个命令 类似以下 bash 命令 make a out a out仅在以下情况下执行make那是成功的 下列 command1 command2 应该致力
  • 读取 nul 分隔字段

    给定这个文件 printf alpha 0bravo 0charlie gt delta txt 我想将这些字段读入单独的变量中 我使用的原因 空分隔符是因为字段将包含文件路径 其中可以包含 除 null 之外的任何字符 我尝试了这些命令
  • Android 中某些相机分辨率下的不同捕获输出大小

    我正在使用 Android Camera2 API 开发一个自定义相机应用程序 您可以在手机中可用的不同相机和视频分辨率之间切换 它还提供了拍摄 1 1 方形照片的可能性 为了拍摄方形照片 我拍摄了一张正常的 4 3 照片 然后将其裁剪以保
  • GetType 返回 Int 而不是 System.Int32

    GetType ToString 返回对象的全名 我想要您通常用来实例化该对象的名称 即 int 而不是 Int32 有没有办法做到这一点 C 有许多 类型 它们实际上是 NET CLR 的关键字别名Types 在这种情况下 int是 C
  • 如果不允许任务之间共享可变状态,为什么 Rust 具有互斥体和其他同步原语?

    我的理解是 Rust 中的任务之间不可能共享可变状态 那么为什么 Rust 有这样的东西mutexes https doc rust lang org std sync struct Mutex html在语言中 他们的目的是什么 不允许在
  • 如何在asp.net core中更改Razor中的根路径〜/

    我有一个带有 Razor 的 ASP NET Core 2 1 MVC 应用程序 它广泛使用 path syntax 如果应用程序从域根运行 例如 从http localhost 5000 但是当我在非根位置运行应用程序时 例如 http
  • 错误:您需要包含一些实现 __karma__.start 方法的适配器

    我正在尝试向我的项目之一添加一些单元测试 到目前为止 我已经安装并配置了 karma 并安装了 jasmine 我的里面有一个测试文件test folder karma 服务器已启动 浏览器页面已准备就绪 但是karma run失败如下 k
  • 如何翻译$url_handlers?

    我遇到一个情况 需要翻译以下内容 url handlers对于不同的国家 因此 在英文网站上 URL 如下所示 http website com gyms boston group training http website com gym
  • curl_multi_exec:下载的一些图像丢失了一些数据/流不完整

    我已经实现了一个 PHP 函数 它检查并下载大量图像 gt 1 000 使用数组传递给它 使用 PHPcurl multi init method 经过几次返工后 因为我得到了 0 字节文件等内容 我现在有一个下载所有图像的解决方案 但下载
  • 在同一列上多次调用 Pandas df.sort_values() 会产生不同的结果?

    下面的例子 为什么会发生这种情况以及如何防止它 gt gt gt df pd DataFrame a list range 150 b 1 2 3 50 gt gt gt df sort values b equals df sort va
  • 动态确定类型参数后返回通用类型

    我有一个通用类 如下所示 public class MyClass
  • 在编译的 C 或 C++ 代码中加密密码

    我知道如何在终端中使用 GCC 和 CC 编译 C 和 C 源文件 但是我想知道编译后在这些文件中包含密码是否安全 例如 我检查用户输入的某个密码 例如 123 但似乎已编译的 C C 程序可能会被反编译 无论如何 有没有办法编译 C C