生成10位的永不重复的字母加数字

Recca0523 2013-08-02 10:13:10
各位算法高手,公司有个需求算法小白我实在想不出来,求教。
需求是生成10位的永不重复的字母加数字,不能有特殊字符。
我的思路是用guid生成唯一code,通过md5(16)算出,然后GetHashCode(),之后用固定的字母数字对照表(比如1->A,2->D),生成一段10位的字母加数字。
问题在于GetHashCode返回的数据是不固定长度的,有9位有10,也就是我生成的长度不统一了。
各位有没有更好的办法啊?
其实要求就是每次生成的string必须是唯一的10位字符串,我不知道有什么好的算法,我自己的这种做法很傻,请各位指教。
取md5结果的前10能否永不重复?
用了guid 作为种子
现在就要解决,怎么把guid变成一个10位的数字加字母。

private string getStr()
{
string s = GetMd5Str(Guid.NewGuid().ToString());
return Math.Abs(s.GetHashCode()).ToString();
}


/// <summary>
/// MD5 16位加密
/// </summary>
/// <param name="ConvertString"></param>
/// <returns></returns>
private string GetMd5Str(string ConvertString)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
t2 = t2.Replace("-", "");
return t2;
}
...全文
1843 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Turing_0 2013-08-23
  • 打赏
  • 举报
回复
用周期接近但小于36^10或62^10的M序列,再编码
hlyces 2013-08-20
  • 打赏
  • 举报
回复
珍惜生命,远离加解密
大尾巴猫 2013-08-11
  • 打赏
  • 举报
回复
再补充一下上面的算法, 刚开始的时候可以不从0000000开始,从自定义的36进制某一个数开始,比如5484732
大尾巴猫 2013-08-11
  • 打赏
  • 举报
回复
引用 4 楼 Recca0523 的回复:
[quote=引用 2 楼 nice_cxf 的回复:] 没那么复杂,不过理论上是不可能永不重复的,最多10^36(如果区分大小写是62) 第一个是000000000,以后按照36进制+1即可
这个办法时能解决不重复的数字+字母,但是会被推算出来,那这样我做这么多步骤就无意义了。 [/quote] 这个思路可以的,不过要稍微装饰一下。 自己定义一个36个字符的序列(D, 1,7...代表36进制中的0,1 ,2 ...) 从0000000000开始,每次+1(自定义36进制加法) 更进一步,为了防止别人从个位的变化推算10位的变化...推算下去, 生成的字符串再进行换位处理,可以自定义一个算法(比如,第0位和3位换,1位和7位换) 这样进一步混淆。
Recca0523 2013-08-05
  • 打赏
  • 举报
回复
引用 2 楼 nice_cxf 的回复:
没那么复杂,不过理论上是不可能永不重复的,最多10^36(如果区分大小写是62) 第一个是000000000,以后按照36进制+1即可
这个办法时能解决不重复的数字+字母,但是会被推算出来,那这样我做这么多步骤就无意义了。
Recca0523 2013-08-05
  • 打赏
  • 举报
回复
引用 1 楼 soanl 的回复:
微博短地址,我想估计适合你
微博短地址的做法是取得长url的MD5,然后随机取得几位。 我这边固定要10位的数字+字母,而且是不重复的,不可逆推的。
nice_cxf 2013-08-03
  • 打赏
  • 举报
回复
没那么复杂,不过理论上是不可能永不重复的,最多10^36(如果区分大小写是62) 第一个是000000000,以后按照36进制+1即可
布丰 2013-08-03
  • 打赏
  • 举报
回复
微博短地址,我想估计适合你

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧