我面临以下问题: 从受限制的字母缩略语中测出独特的字母数字。 我在此在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++ ) {
System.Console.Out.WriteLine( generatedStrings[i] );
}
它产生10K座标,从“固定”开始,或以其他方式由英文大写字母和号码组成。 产出看好。
现在我看到以下问题。 生产的胎体是不可能由任何人预测的。 在我的方案中,种子依赖时间。 一旦有人知道种子价值,他就能够操作同样的代码,并获得同样的指示。 如果他知道任何两条插图,他可以很容易地读出我的算法(因为它确实是阴险的),并试图淡化种子价值——只是列举所有可能的种子价值,直到他看到产出中两个已知的插图。
我的法典是否可以作一些简单的改动,以降低所描述袭击的可能性?