编程语言
首页 > 编程语言> > PHP的加密挑战

PHP的加密挑战

作者:互联网

一个朋友给我一个挑战:他使用PHP的crypt函数(CRYPT_STD_DES)(来自PHP4)对字符串进行了加密.我知道用于加密的盐,并且因为crypt是一种单向算法,所以我必须使用蛮力方法,而且我知道密码仅包含小写字母.

现在,我有一台具有16个内核(2个Xeon)和大量RAM的计算机.实施强制攻击最有效的方法是什么(我想我必须使用PHP,这不太好,但是如果你们有什么主意…)

[编辑]

我忘了提一下,加密的presentationaction长度为13个字符,而字符串小于8个字母,就像简单的密码加密一样:)

解决方法:

这是使用C语言的快速尝试(与gcc -O2 -lcrypt编译)
在Ubuntu 10.04.1上

  #define _XOPEN_SOURCE
  #include <unistd.h>
  #include <stdio.h>
  #include <stdlib.h>

  void inc(char *p)
  {
     int i;
     for (i=0 ; i<8 && p[i]=='z' ; i++);
     if (i >= 8) exit(printf("Not found :-(\n"));
     if (!p[i]) p[i]='a';
     else p[i]++;
     while (--i >= 0) p[i]='a';
  }

  int main ()
  {
    char *salt = "XY";
    char *buzz = "XYaAbBcCZ0123";

    char pass[] = { 'a',0,0,0,0,0,0,0,0 };

    while(1)
      if ( ! strcmp(crypt(pass, salt), buzz))
        exit(printf("Found %s :-)\n", pass));
      else
        inc(pass);
  }

该代码应在当今的PC上在一两天内运行(2.10 ^ 11组合),您可以在多台计算机上运行它,一台从“ a”运行到“ gzzzzzzz”,另一台从“ haaaaaaa”运行到“ nzzzzzzzzz”等. .. 例如.

标签:brute-force,encryption,php
来源: https://codeday.me/bug/20191023/1915751.html