A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© FlyFish 中级黑马   /  2014-12-20 22:19  /  1283 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FlyFish 于 2014-12-20 22:24 编辑

一个长度为5的字符串,由大小写字母和数字随机组成,怎样编写程序猜中这个字符串?
自己写了个垃圾程序,猜3位的还可以,4位的内存就溢出了,就不发出来献丑了……谁有优化的程序?

6 个回复

倒序浏览
能不能把字符串拆开来然后让计算机自动比较我不知道哪里有问题
回复 使用道具 举报
  1. package heimaBlogQuesions;
  2. import java.io.*;
  3. import java.util.*;

  4. import javax.lang.model.element.Element;
  5. public class 猜字母 {
  6.         public static String typeit() throws IOException
  7.         {
  8.                 System.out.println("type it");

  9.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  10.                
  11.                
  12.                 String str = bufr.readLine();
  13.                 return str;
  14.         }
  15.         public static char typeChar() throws IOException
  16.         {
  17.                 System.out.println("type one character");
  18.                 //BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  19.                 InputStreamReader inr = new InputStreamReader(System.in);
  20.                
  21.                
  22.                 int cha;
  23.                 cha = inr.read();

  24.                 sop("cha:"+(char)cha);
  25.                 return (char)cha;
  26.                
  27.         }
  28.         public static void sop(Object obj)
  29.         {
  30.                 System.out.println(obj);
  31.         }
  32.         public static void main(String[] args) throws IOException {

  33.                 String str = typeit();
  34.                
  35.                 sop(str);
  36.                 zidongcai(str);
  37.                
  38.         }

  39.         public static String zidongcai(String str)
  40.         {
  41.                 StringBuffer  sb = new StringBuffer();
  42.                 char[] sar = str.toCharArray();
  43.                 for(int i = 0;i<sar.length;i++)
  44.                 {
  45.                         for(int j=0;j<=126;j++)
  46.                         {
  47.                                 if((char)j == sar[i])
  48.                                 {
  49.                                         String string = String.valueOf(sar[i]);
  50.                                         sb.append(string);
  51.                                 }
  52.                         }
  53.                        
  54.                 }
  55.                 sop("sb:"+sb);

  56.                 return sb.toString();       
  57.         }

  58. }
复制代码
回复 使用道具 举报
楼主是要做暴力破解吗???
回复 使用道具 举报
as604049322 发表于 2014-12-21 13:15
楼主是要做暴力破解吗???

抢票的时候发现抢票软件可以自动输入验证码,突发奇想而已
回复 使用道具 举报
FlyFish 发表于 2014-12-22 10:54
抢票的时候发现抢票软件可以自动输入验证码,突发奇想而已

晕。。。你这个只能用于暴力破解。自动输入验证码,需要做验证码识别才行,你这样暴力输入,而服务器端只允许你3秒钟输入一次,你一次输入成功基本需要进行上亿次输入,基本半个月也没破解一个验证码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马