安全地覆盖 RAM 中的 Python 变量? [复制]

2023-11-21

我正在用 Python 编写一个程序,其中涉及对密码进行哈希处理。假设我用它来获取密码:

import getpass
password = getpass.getpass("Password: ")

然后对其进行哈希处理,有没有什么方法可以安全地从 RAM 中删除所有未哈希密码的痕迹?


正如前面所讨论的,即使您有自定义实现,也没有万无一失的方法可以在 python 中执行此操作(尽管这可能是一种方法)。

现在我不知道你的应用程序应该做什么,但我可以毫无疑问地告诉你,即使在哈希之后,你的数据在 RAM 中比在数据库中更安全。

记忆的工作方式非常复杂。每个进程都有自己的虚拟内存空间,该空间不必是连续的。完整的内存块被交换到磁盘并放回到另一个内存块中。整个内存只是一组字节,几乎不可能区分整数数组、字符串、猫或简单的随机数据。

一些数据块被部分地重新分配,从而产生大量的部分数据。想象一下这会是什么样子,1、2、8 甚至 16Gb 的随机数据,潜在的黑客必须在所有这些 0 和 1 中找到密码。

如果有人想在执行过程中破解您的密码,他需要以 root 身份实时访问计算机;由于我之前所说的原因,他不能仅通过事后查看交换来做到这一点。

但如果有人拥有这种访问权限,那么还有很多其他方法可以获取密码。例如,只需调试程序,或者更好,只需更改源代码并使其打印密码:)

大多数黑客不会费心去经历这样的麻烦。黑客攻击主要是关于社会工程学,这基本上是让用户自愿向黑客提供密码。Phishing就是这样一种方法。

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

安全地覆盖 RAM 中的 Python 变量? [复制] 的相关文章

随机推荐

  • Java:从 char 中减去 '0' 以获得 int...为什么会这样?

    这工作正常 int foo bar charAt 1 0 但这不是 因为 bar charAt x 返回一个 char int foo bar charAt 1 似乎从 char 中减去 0 会将其转换为整数 为什么或如何减去字符串 0 或
  • 如何通过 bitbucket-hook 将 crumb 信息传递给 jenkins?

    curl X POST http xxx yyy zzz 5555 job job name build user john devops jenkins 11df3ed41129c5c7da1518e9c3149896de H Jenki
  • Android+PhoneGap:android:windowSoftInputMode 似乎不起作用

    我正在开发一个基于 PhoneGap 的应用程序 我在 google 上搜索了很多关于如何让我的 webview 在虚拟键盘出现时调整其高度 或者至少获取虚拟键盘的高度 我发现很多帖子 包括 stackoverflow 都说 android
  • 无法通过 java 代码连接到服务器。获取 javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure

    我正在尝试使用 AWS 上的 REST API 构建测试自动化工具放心框架 我只是尝试使用简单的 HTTP POST 并检查输出 JSON 正文 但是当我在 Eclipse 中运行它时 我得到了SSL握手异常 我确实尝试调查这个问题 发现它
  • GCC 在 bison 生成的头文件中显示“数字常量之前的语法错误”

    当我使用 bison parser y d t 编译 y 文件 然后将 parser tab h 文件包含在我的 Flex 文件中时 gcc 说 错误 数字常量之前有语法错误 它引用第 32 行 这是 yytokentype 枚举中的第一行
  • 如何找到.babelrc?

    我想创建 React 应用程序蚂蚁设计 在文档中 它说我需要更改 babelrc 以模块化加载文件 也来自https medium com GeoffMiller how to customize ant design with react
  • 如何使用 Python-Telegram-Bot 获取 Telegram 用户的用户名、名字或姓氏?

    我正在创建一个 Telegram 机器人Python Telegram Bot 我知道update message chat id返回用户的聊天 ID 但我需要知道如何获取用户的用户名或名字和 或姓氏 我找到了This在 Telegram
  • Spring RowMapper 接口到底是如何工作的?

    我正在学习 Spring Core 认证 我对 Spring 如何处理 JDBC 查询有一些疑问 所以我知道我可以通过各种方式从数据库表中获取数据 具体取决于我期望获取的数据类型 1 查询简单型 作为 int long 或 String 我
  • 一个完整的c#操作系统

    我看到了这个话题here 我想知道这是否合法 听起来像 以及这样做的缺点是什么 在某些架构中独立运行它需要什么 谢谢 尝试用托管语言创建操作系统目前是一个 有趣的研究问题 这意味着这似乎是可能的 但仍有相当多的重要问题需要解决 例如 我不希
  • ASP.NET 身份和移动客户端

    最新版本的 ASP NET 包括新的身份验证框架 ASP NET Identity 它应该是所有新的和近期的 ASP NET 项目和网站中用户管理的核心构建块 我已经看到它可以很好地与 WebAPI 集成 但还没有看到任何集成为移动客户端设
  • 数据湖和大数据是一样的吗?

    我试图了解数据湖和大数据之间是否存在真正的区别 如果你检查一下这两个概念 它们就像一个大存储库 它保存信息直到有必要为止 所以 我们什么时候可以说我们正在使用大数据还是数据湖 我不能说我以前遇到过 大存储库 这个术语 但要回答最初的问题 不
  • 如何让 fancyBox 2 调整其高度以适应其内容?

    我正在努力让我的fancyBox当其内容高于视口时扩展高度 这样 用户就可以使用浏览器的滚动条滚动其内容 相反 我的 fancyBox 不断获得自己的滚动条 我只是使用内联内容 而不是iframe 这些是我设置的选项 fancybox fa
  • 如何可靠地去除破坏代码的不可见字符?

    我正在尝试构建一个小书签 并被这个我刚刚弄清楚的问题所困扰 u8203字符 Chrome 在我的代码块 粘贴到 JS 控制台后 无助地告诉我是一个 无效字符非法 幸运的是 Safari 告诉我这是一个 u8203 我正在 Sublime T
  • NSSortDescriptor - 基于另一个数组对描述符进行排序

    我有一个核心数据应用程序 我想获取一种对象 User User拥有财产userId 我有另一个数组userIds 1 4 3 5 我想创建一个NSSortDescriptor这对我的User基于对象的顺序userIds 在数组中 这可能吗
  • powershell v2 - 如何获取进程ID

    我有一个应用程序 它运行自身的多个实例 例如 AppName exe instance1 AppName exe instance2 AppName exe instance3 我正在尝试使用 Powershell v2 创建一个简单的脚本
  • 如何偏移多边形边?

    I have a list of point2D that makes a closed polygon Now I want to create another set of 2D points by offsetting the pol
  • EntityType“ApplicantPosition”没有定义键

    运行我的第一个 asp net mvc 应用程序时出现此错误 我认为实体框架会自动创建以 Id 结尾的列名的键 这不是正确的吗 正如您所看到的 ApplicantPositionID 将是一个包含 2 列作为主键的表 因为它与申请人和职位相
  • 如何将字符串分配给可变静态变量?

    我想为全局变量赋值 但它一直出现编译器错误 static mut NameArr static str 20 0 20 fn main unsafe static mut S1 String to string S1 push 0 Name
  • EF Core 3.1 是否支持数据库优先方法?

    我们正在移植一个ASP NET MVC 4 x申请到ASP NET Core 3 1 当前应用程序正在使用EF 6 xDB优先方法 作为此迁移的一部分 我们将使用EF Core 3 1作为当前的替代方案EF 6 x 所以问题是 EF Cor
  • 安全地覆盖 RAM 中的 Python 变量? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写一个程序 其中涉及对密码进行哈希处理 假设我用它来获取密码 import getpass password getpass getpass Password 然后对其进行哈希处理 有没