【问题标题】:Can a python script decrypt a HASH that was created in a C++ program?python 脚本可以解密在 C++ 程序中创建的 HASH 吗?
【发布时间】:2011-10-28 13:06:55
【问题描述】:

我有一个比赛,人们可以使用他们在 Android 应用中发现的密码参加比赛。我选择确保只有购买了该应用程序的人才能参加比赛的方法是使用 HMAC SHA256 的共享密钥编码(加密?)。

所以我的秘密将在 Android 应用程序中用 C 加密(使用 Crypto++,你有什么更好的 SHA 库的建议吗?我发现 Crypto++ 真的很难使用)。

这只是一个例子:

Unencrypted shared secret = "my shared secret"  
Unencrypted secret code   = "abcdef"  
Encrypted shared secret   = "dsgdfgdfgdfgfdgf"   
Encrypted shared secret   = "ddffgdgdf"

因此,当用户发现密码时,他们将被带到网页(python 脚本),并且 HMAC 加密的共享密码将作为 CGI 参数传递:

http://mysite/competition.py?encodedSecret=3dfdfdg343jkfjk390kl

然后我的 python 脚本将查看 CGI 参数并对其进行解密以获取共享密钥(以验证比赛条目是否来自拥有该应用程序的用户)和密码(以查看用户是否赢得了任何东西)。

我的问题是: python 脚本(使用 hashlib 模块)是否可以解密使用 Crypto++ 在 C 中加密的内容?

【问题讨论】:

  • 如果是无法解密的哈希。
  • 您无法解密哈希,但您可以通过执行相同的加密来验证哈希并查看结果是否匹配。
  • @nandhp:我可以解密 SHA256 吗?如果没有,我如何将我的共享密钥发送到 python 脚本?
  • @Sam 您的问题专门询问有关解密 HASH 的问题(全部大写,不少于)。也许你应该解决你的问题,而不是侮辱那些试图免费帮助你的人。
  • @Sam JBernardo 是正确的...您不能“解密”哈希,因为它们被设计为 单向函数。暴力破解 SHA256 将需要数十亿年的时间。如果您想要加密,请查看 AES。您加密/解密的语言根本不重要。

标签: c++ python encryption hash hmac


【解决方案1】:

以这种方式使用哈希时,通常您会将密码(以明文形式)以及密码和共享密码的哈希传递到您的网站。然后,网站可以执行相同的哈希(因为它知道共享密钥),并验证结果是否相同。

在您的服务器上“破解”哈希是一项额外的工作,我看不出它如何增加任何安全性。

如果您不能以明文形式传输代码,则使用您的共享密钥作为对称加密算法中的密钥会更有效(例如AES)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    相关资源
    最近更新 更多