从下面的样本逆推生成规则,看看谁的算法牛逼。

谁在墙外等红杏
企业官方账号
博客专家认证
2016-01-09 02:11:43
下面是数据样本,一行一条,要求逆推出生成样本的算法...我们来看看谁的速度快.

d1f592b8-0151-1000-e001-06bd0a0d0114
d1f592b8-0151-1000-e001-07890a0d0114
d1f592b8-0151-1000-e001-09670a0d0114
d1f592b8-0151-1000-e001-0a370a0d0114
d1f592b8-0151-1000-e001-0b320a0d0114
d1f592b8-0151-1000-e001-0d4b0a0d0114
d1f592b8-0151-1000-e001-0e850a0d0114
d1f592b8-0151-1000-e001-0f350a0d0114
d1f592b8-0151-1000-e001-148d0a0d0114
d1f592b8-0151-1000-e001-15750a0d0114
d1f592b8-0151-1000-e001-15f70a0d0114
d1f592b8-0151-1000-e001-17c70a0d0114
d1f592b8-0151-1000-e001-19f00a0d0114
d1f592b8-0151-1000-e001-1bde0a0d0114
d1f592b8-0151-1000-e001-1d600a0d0114
d1f592b8-0151-1000-e001-1e8c0a0d0114
d1f592b8-0151-1000-e001-21520a0d0114
d1f592b8-0151-1000-e001-247c0a0d0114
d1f592b8-0151-1000-e001-2bda0a0d0114
d1f592b8-0151-1000-e001-330a0a0d0114
d1f592b8-0151-1000-e001-34a60a0d0114
d1f592b8-0151-1000-e001-352a0a0d0114
d1f592b8-0151-1000-e001-3a190a0d0114
d1f592b8-0151-1000-e001-3a8b0a0d0114
d1f592b8-0151-1000-e001-3b280a0d0114
...全文
589 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-01-18
  • 打赏
  • 举报
回复
赵4老师 2016-01-18
  • 打赏
  • 举报
回复
仅供参考:C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c:
/***
*rand.c - random number generator
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines rand(), srand() - random number generator
*
*******************************************************************************/

#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>

/***
*void srand(seed) - seed the random number generator
*
*Purpose:
*       Seeds the random number generator with the int given.  Adapted from the
*       BASIC random number generator.
*
*Entry:
*       unsigned seed - seed to seed rand # generator with
*
*Exit:
*       None.
*
*Exceptions:
*
*******************************************************************************/

void __cdecl srand (
        unsigned int seed
        )
{
        _getptd()->_holdrand = (unsigned long)seed;
}


/***
*int rand() - returns a random number
*
*Purpose:
*       returns a pseudo-random number 0 through 32767.
*
*Entry:
*       None.
*
*Exit:
*       Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl rand (
        void
        )
{
        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );
}
赵4老师 2016-01-18
  • 打赏
  • 举报
回复
没准楼主的样本中的数字就对应某个伪随机数系列。
赵4老师 2016-01-18
  • 打赏
  • 举报
回复
线性同余法生成随机数,设定某个种子后,可以产生对应的一系列伪随机数。
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
仅供参考:C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c:
/***
*rand.c - random number generator
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines rand(), srand() - random number generator
*
*******************************************************************************/

#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>

/***
*void srand(seed) - seed the random number generator
*
*Purpose:
*       Seeds the random number generator with the int given.  Adapted from the
*       BASIC random number generator.
*
*Entry:
*       unsigned seed - seed to seed rand # generator with
*
*Exit:
*       None.
*
*Exceptions:
*
*******************************************************************************/

void __cdecl srand (
        unsigned int seed
        )
{
        _getptd()->_holdrand = (unsigned long)seed;
}


/***
*int rand() - returns a random number
*
*Purpose:
*       returns a pseudo-random number 0 through 32767.
*
*Entry:
*       None.
*
*Exit:
*       Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl rand (
        void
        )
{
        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );
}
看不懂,求明指。在vs上有两个头文件找不到 #include <cruntime.h> #include <mtdll.h>
  • 打赏
  • 举报
回复
引用 5 楼 iamlaosong 的回复:
明白你的意思了,一串16进制数字,结构是:双字-单字-单字-单字-双字,其中只有最后的双字中前一位单字在变化,虽然是不断增加,但似乎没什么规律,好像是存储地址。猜想当前面那个单字增加到进位时,后面的单字应该有变化。
我也尝试了很久,还是没找到规律,期待高手的出现。
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
d1f592b8-0151-1000-e001-06bd0a0d0114   0x06bd  +0x00cc
d1f592b8-0151-1000-e001-07890a0d0114   0x0789  +0x01de
d1f592b8-0151-1000-e001-09670a0d0114   0x0967  +0x00d0
d1f592b8-0151-1000-e001-0a370a0d0114   0x0a37  +0x00fb
d1f592b8-0151-1000-e001-0b320a0d0114   0x0b32  +0x0219
d1f592b8-0151-1000-e001-0d4b0a0d0114   0x0d4b  +0x013a
d1f592b8-0151-1000-e001-0e850a0d0114   0x0e85  +0x00b0
d1f592b8-0151-1000-e001-0f350a0d0114   0x0f35  +0x0558
d1f592b8-0151-1000-e001-148d0a0d0114   0x148d  +0x00e8
d1f592b8-0151-1000-e001-15750a0d0114   0x1575  +0x0082
d1f592b8-0151-1000-e001-15f70a0d0114   0x15f7  +0x01d0
d1f592b8-0151-1000-e001-17c70a0d0114   0x17c7  +0x0229
d1f592b8-0151-1000-e001-19f00a0d0114   0x19f0  +0x01ee
d1f592b8-0151-1000-e001-1bde0a0d0114   0x1bde  +0x0182
d1f592b8-0151-1000-e001-1d600a0d0114   0x1d60  +0x012c
d1f592b8-0151-1000-e001-1e8c0a0d0114   0x1e8c  +0x02c6
d1f592b8-0151-1000-e001-21520a0d0114   0x2152  +0x032a
d1f592b8-0151-1000-e001-247c0a0d0114   0x247c  +0x075e
d1f592b8-0151-1000-e001-2bda0a0d0114   0x2bda  +0x0730
d1f592b8-0151-1000-e001-330a0a0d0114   0x330a  +0x019c
d1f592b8-0151-1000-e001-34a60a0d0114   0x34a6  +0x0084
d1f592b8-0151-1000-e001-352a0a0d0114   0x352a  +0x04ef
d1f592b8-0151-1000-e001-3a190a0d0114   0x3a19  +0x0072
d1f592b8-0151-1000-e001-3a8b0a0d0114   0x3a8b  +0x009d
d1f592b8-0151-1000-e001-3b280a0d0114   0x3b28
看不出啥规律
规律肯定会有的,只是我们还没找到。
赵4老师 2016-01-12
  • 打赏
  • 举报
回复
d1f592b8-0151-1000-e001-06bd0a0d0114   0x06bd  +0x00cc
d1f592b8-0151-1000-e001-07890a0d0114   0x0789  +0x01de
d1f592b8-0151-1000-e001-09670a0d0114   0x0967  +0x00d0
d1f592b8-0151-1000-e001-0a370a0d0114   0x0a37  +0x00fb
d1f592b8-0151-1000-e001-0b320a0d0114   0x0b32  +0x0219
d1f592b8-0151-1000-e001-0d4b0a0d0114   0x0d4b  +0x013a
d1f592b8-0151-1000-e001-0e850a0d0114   0x0e85  +0x00b0
d1f592b8-0151-1000-e001-0f350a0d0114   0x0f35  +0x0558
d1f592b8-0151-1000-e001-148d0a0d0114   0x148d  +0x00e8
d1f592b8-0151-1000-e001-15750a0d0114   0x1575  +0x0082
d1f592b8-0151-1000-e001-15f70a0d0114   0x15f7  +0x01d0
d1f592b8-0151-1000-e001-17c70a0d0114   0x17c7  +0x0229
d1f592b8-0151-1000-e001-19f00a0d0114   0x19f0  +0x01ee
d1f592b8-0151-1000-e001-1bde0a0d0114   0x1bde  +0x0182
d1f592b8-0151-1000-e001-1d600a0d0114   0x1d60  +0x012c
d1f592b8-0151-1000-e001-1e8c0a0d0114   0x1e8c  +0x02c6
d1f592b8-0151-1000-e001-21520a0d0114   0x2152  +0x032a
d1f592b8-0151-1000-e001-247c0a0d0114   0x247c  +0x075e
d1f592b8-0151-1000-e001-2bda0a0d0114   0x2bda  +0x0730
d1f592b8-0151-1000-e001-330a0a0d0114   0x330a  +0x019c
d1f592b8-0151-1000-e001-34a60a0d0114   0x34a6  +0x0084
d1f592b8-0151-1000-e001-352a0a0d0114   0x352a  +0x04ef
d1f592b8-0151-1000-e001-3a190a0d0114   0x3a19  +0x0072
d1f592b8-0151-1000-e001-3a8b0a0d0114   0x3a8b  +0x009d
d1f592b8-0151-1000-e001-3b280a0d0114   0x3b28
看不出啥规律
宋哥 2016-01-12
  • 打赏
  • 举报
回复
看这个长度,128位,好像是IPV6地址哦
宋哥 2016-01-12
  • 打赏
  • 举报
回复
看错了,最后面是三个字长,48bit
宋哥 2016-01-12
  • 打赏
  • 举报
回复
明白你的意思了,一串16进制数字,结构是:双字-单字-单字-单字-双字,其中只有最后的双字中前一位单字在变化,虽然是不断增加,但似乎没什么规律,好像是存储地址。猜想当前面那个单字增加到进位时,后面的单字应该有变化。
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
MD5随便加点盐,够人逆推一辈子的。
不是MD5密文什么的,只是一串ID,求生成规则。
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
MD5随便加点盐,够人逆推一辈子的。
不是破译这码的意思,而是向这码的生成规律,您仔细看看,给出的样本码是有规律的。
赵4老师 2016-01-11
  • 打赏
  • 举报
回复
MD5随便加点盐,够人逆推一辈子的。
宋哥 2016-01-11
  • 打赏
  • 举报
回复
MD5不加盐,也够人逆推一辈子的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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