我知道这可能听起来像一个毫无意义的问题,但是听我说...
我基本上想知道我是否可以信任GUID来生成一个在100%的时间内都是唯一且无法预测的值.
我基本上是在网站的登录系统上滚动,并想知道GUID是否足够安全用于会话cookie.
在评估答案时,将非常感谢有关如何生成GUID的任何背景知识.
感谢您提供重复问题的链接,但我的问题仅针对.Net框架.
要开始,并定义guid,我使用.net框架Guid这有点假设情况用户在执行特定操作时会生成guid.每个用户都可以看到自己的guid.如果用户要知道另一个用户的guid之一,则会出现安全性损害.
如果我们认为用户无法窃取另一个用户的guid并且只能猜测它,那么这个系统的安全性如何?
我明白盲目猜测guid是不可能的.即使他们有一百万个成功价值,他们仍然只有10 ^ 20的成功猜测机会
我害怕可能存在的问题是指导预测.用户是否可以生成大量请求,查看他获得的guid,并且知道.net guid生成公式可以大大提高他猜测的几率?这些几率可以降低到安全问题吗?在这种情况下,如何以一种独特的不可猜测的方式生成密钥?
我问任何提到猜测/碰撞几率的人都会增加一些难以理解的含义.要么是用于定义赔率的确切数字,要么是"它可以用于存储帐户数据,而不是用于存储敏感数据"
编辑
这个问题似乎很好地进入了我最初想要探索的领域这个问题 GUID是(临时)加密的一个好关键吗?
我正与一位程序员(PHP)进行辩论,我们在GUID方面都不同意.假设有关每个图像的信息存储在DB中并且具有自己的主键(int).
除了不必担心重复的文件名之外,还有什么理由可以为图像文件名使用唯一的ID?
我不想忽视他的方法论,但它也不适合我.
谢谢!本
更新: 听到许多+ 1的GUID,SEO如何受到"随机"生成的图像文件名的影响?(谢谢Sukumar)
我遇到了以下问题:从受限制的字母表中生成N个唯一的字母数字字符串.这是我在C#中的解决方案:
string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random generator = new Random();
const int ToGenerate = 10000;
const int CharactersCount = 4;
ArrayList generatedStrings = new ArrayList();
while( generatedStrings.Count < ToGenerate ) {
string newString = "Prefix";
for( int i = 0; i < CharactersCount; i++ ) {
int index = generator.Next( Alphabet.Length );
char character = Alphabet[index];
newString += character;
}
if( !generatedStrings.Contains( newString ) ) {
generatedStrings.Add( newString );
}
}
for( int i = 0; i < generatedStrings.Count; i++ …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试构建单个登录服务器,以供几个客户端使用。因为我不确定,将要有多少个客户端,所以我计划这样做,以便可以在运行时使用EntityFramework配置存储添加客户端。
现在我的问题是如何设置客户端机密。我尝试生成一个新的GUID并将其用作秘密。现在的问题是,配置存储只想保存机密的哈希版本,而我需要访问普通机密才能将其添加到实际的客户端应用程序中。
我以为这是故意的,不建议您保存秘密的明文?保存机密的最佳解决方案是什么?