-4

我有一个比赛,人们可以使用他们在 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 中加密的内容?

4

1 回答 1

0

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

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

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

于 2011-08-17T00:59:41.623 回答