0

我想学习为 api 身份验证创建唯一应用程序 ID 和应用程序密码的最佳实践。现在我只是通过 UUID 生成器创建 appid 并使用随机文本创建 hash(md5) 作为应用程序机密。但它看起来并不安全,尤其是对于应用程序机密。因此,很高兴听到其他解决方案。

4

1 回答 1

1

通常 app_id 是公开的。它不是保密的。UUID、电子邮件地址、uuid 或整数就足够了。

对于应用程序的秘密,任何高质量的 PRNG 就足够了。随机数据的 MD5/散列只会给你另一个随机令牌。

您的操作系统是随机数的最佳来源。每种语言都有不同的 API 来获取它。

破解秘密的可行性是密钥长度的函数。在适当的条件下,256 位密钥被认为是不可破解的。

对于python,这是获取秘密的代码:

import os
import base64

key_bytes = os.urandom(256)
# If you need to pass it in a URL, you could base64 it,
# or convert it to hex
key_b64 = base64.b64encode(key_bytes)
key_hex = ''.join( [hex(x) for x in key_bytes])

print 'b64', key_b64
print 'hex', key_hex

输出:

b64 ypPp16psb1mBrlS5BE01kcwB+tjwOdDbu3K2Ix0cYz5KxCX42PoRR5a2cpwZGhULeW5BEFenwg5G55m8czU+gF8yS5wz7BfCaT8Z15pgarUM+rrPl/tbYKu3Hc0FE8/5jczZKwFlV37Etq/Hn2gT/9njXn1YIh+NlLBec6Yp3Y6dbSD6zqHv60qPZSUqmVRL9UrbJBAa38gCgMjqj79Qe/pMBpH7tMAKrLelmOBedklme9kZzAJrEpFwtp65K8h3RLSDXx0qVNjrToJquaDFOKytwlwkYtV3ANQ/bxLgEN8zXfGalXsO/6d/ZDi03Kjlj36rSL2fcCG0w5oiYTitMQ==
hex 3FC5E75CA3FD62BB42D2EDD3F14B8D247B241B1E9281EC629A5C5271EB65F3F9F1C9547AF5A5715636461C00B7B960CCC78295A31C6F9C1C5DC0ECEECA5278B56F555E3E635541C2E7CC946B73FB2B89EF9E34C0797D6A8452B41A8D0050A856FFA9519FB7E9381218647E18189A3167E3C1A68D545C0868C0B87B69DA69D23EE2A660E9D4A1281D15C57D67F2D2C67A10574E7AEE906CA112E3FF4FD0C087D9F354ACC3ECD5E6A86B171F61B5644E3D630F2C66C25F3BA6DC30A44660C253B4328EB2228759A3194A0A1FAB9BDC6E95051099E3EFA9EC063C6A18F0B4956EBC2F39E19A2AE665A699A10EA91C20DCBFED6FAAB1DAE554469C877979298591ED
于 2013-07-26T20:16:13.167 回答