我们目前正在使用.NET的Guid.NewGuid()来生成激活代码和API密钥。我不知道这是否会造成安全问题,因为他们的算法是开放的。
.NET Guid使用Win32 CoCreateGuid,我不知道它的内部(可能是MAC地址+时间戳?)。有人能从第一个人中得到第二个GUID吗?或者他能用一些聪明的猜测来判断它吗?或者随机性足够好以至于搜索空间变得太大了?
生成随机密钥存在冲突问题,在添加到数据库之前需要进行二次检查。这就是为什么我们坚持使用GUID,但我不确定它们的安全性。
以下是UUIDGEN连续4项产出:
c44dc549-5d92-4330-b451-b29a87848993 d56d4c8d-bfba-4b95-8332-e86d7f204c1c 63cdf 958-9d5a-4b63-ae65-74e4237888ea 6fd09369-0fbd-456d-9c06-27fef4c8eca5
下面是Guid.NewGuid()给出的4张
0652b193-64c6-4c5e-ad06-9990e1ee3791 374b6313-34a0-4c28-b336-bb2ecd879d0f 3c5a345f-3865-4420-a62c-1 cdfd2fd9 5b09d7dc-8546-4ccf-9c85-de0bf4ff43bf0
发布于 2010-12-23 09:56:25
GUID是相当随机的,但它们并不打算用作随机数--它们的唯一目的是唯一地标识实体,这样它们就可以被预测。
发布于 2010-12-23 12:43:40
任何键都有一个有限的空间,一个足够坚定的人/组能够并将生成所有的组合。重要的不是关键,而是你如何组织、它的验证以及它的授权。如果您完全通过Guid来操作验证/授权,那么这可能并不合适,因为潜在的所有Guid都是有效的,您最好使用类似SeriousBit灭弧室的东西。如果您使用的身份验证机制记录了某个特定的Guid已经发出,并且它现在已经被用于激活,那么Guid并不是一个糟糕的选择,因为它是一个相当大的密钥空间。
发布于 2010-12-23 09:48:45
产生guids的机制有多种,有些使用MAC地址,有些仅使用纯随机数生成。如果使用的话,amc地址在GUID中应该是显而易见的--它没有以任何方式散列。
编辑:但条件,有点蹩脚的答案,因为这里我说的是通用的guid生成,而不是一个可能的女士阿尔戈混淆它。正在调查,如果没有用就删除..。
https://stackoverflow.com/questions/4517497
复制相似问题