亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

J2ME登陸設計代碼(Password MIDlet)

2019-11-18 16:17:37
字體:
來源:轉載
供稿:網友
import java.io.*;
import java.util.Random;

import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.SHA1Digest;

public class PassWordMIDlet extends MIDlet implements CommandListener, Runnable { 
  PRivate Display mDisplay;
  private Form mForm;
  private TextField mUserField, mPasswordField;
  private Random mRandom;
  
  public void startApp() { 
    mDisplay = Display.getDisplay(this);
    mRandom = new Random(System.currentTimeMillis());
    
    if (mForm == null) { 
      mForm = new Form("Login");
      mUserField = new TextField("Name", "jonathan", 32, 0);
      mPasswordField = new TextField("Password", "happy8", 32, 0);
      mForm.append(mUserField);
      mForm.append(mPasswordField);
      
      mForm.addCommand(new Command("Exit", Command.EXIT, 0));
      mForm.addCommand(new Command("Login", Command.SCREEN, 0));
      mForm.setCommandListener(this);
    } 

    mDisplay.setCurrent(mForm);
  } 
  
  public void commandAction(Command c, Displayable s) { 
    if (c.getCommandType() == Command.EXIT) notifyDestroyed();
    else {
      Form waitForm = new Form("Connecting...");
      mDisplay.setCurrent(waitForm);
      Thread t = new Thread(this);
      t.start();
    }
  } 

  public void run() { 
    // Gather the values we'll need.
    long timestamp = System.currentTimeMillis();
    long randomNumber = mRandom.nextLong();
    String user = mUserField.getString();
    byte[] userBytes = user.getBytes();
    byte[] timestampBytes = getBytes(timestamp);
    byte[] randomBytes = getBytes(randomNumber);
    String password = mPasswordField.getString();
    byte[] passwordBytes = password.getBytes();
    
    // Create the message digest.
    Digest digest = new SHA1Digest();
    // Calculate the digest value.
    digest.update(userBytes, 0, userBytes.length);
    digest.update(timestampBytes, 0, timestampBytes.length);
    digest.update(randomBytes, 0, randomBytes.length);
    digest.update(passwordBytes, 0, passwordBytes.length);
    byte[] digestValue = new byte[digest.getDigestSize()];
    digest.doFinal(digestValue, 0);

    // Create the GET URL. The hex encoded message digest value is
    //   included as a parameter.
    URLBuilder ub = new URLBuilder(getAppProperty("PasswordMIDlet-URL"));
    ub.addParameter("user", user);
    ub.addParameter("timestamp",
        new String(HexCodec.bytesToHex(timestampBytes)));
    ub.addParameter("random",
        new String(HexCodec.bytesToHex(randomBytes)));
    ub.addParameter("digest",
        new String(HexCodec.bytesToHex(digestValue)));
    String url = ub.toString();

    try 
      // Query the server and retrieve the response.
      HttpConnection hc = (HttpConnection)Connector.open(url);
      InputStream in = hc.openInputStream();
      
      int length = (int)hc.getLength();
      byte[] raw = new byte[length];
      in.read(raw);
      String response = new String(raw);
      Alert a = new Alert("Response", response, null, null);
      a.setTimeout(Alert.FOREVER);
      mDisplay.setCurrent(a, mForm);
      in.close();
      hc.close();
    } 
    catch (IOException ioe) { 
      Alert a = new Alert("Exception", ioe.toString(), null, null);
      a.setTimeout(Alert.FOREVER);
      mDisplay.setCurrent(a, mForm);
    } 
  } 
  
  private byte[] getBytes(long x) { 
    byte[] bytes = new byte[8];
    for (int i = 0; i < 8; i++)
      bytes[i] = (byte)(x >> ((7 - i) * 8));
    return bytes;
  } 
  
  public void pauseApp() { } 

  public void destroyApp(boolean unconditional) { } 


class URLBuilder { 
  private StringBuffer mBuffer;
  private boolean mHasparameters;
  
  public URLBuilder(String base) { 
    mBuffer = new StringBuffer(base);
    mHasParameters = false;
  } 
  
  public void addParameter(String name, String value) { 
    // Append a separator.
    if (mHasParameters == false) { 
      mBuffer.append('?');
      mHasParameters = true;
    } 
    else
      mBuffer.append('&');
    // Now tack on the name and value pair. These should
    //   really be URL encoded (see java.net.URLEncoder in
    //   J2SE) but this class appends the name and value
    //   as is, for simplicity. Names or values with spaces
    //   or other special characters will not work correctly.
    mBuffer.append(name);
    mBuffer.append('=');
    mBuffer.append(value);
  } 
  
  public String toString() { 
    return mBuffer.toString();
  } 


class HexCodec { 
  private static final char[] kDigits = { 
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    'a', 'b', 'c', 'd', 'e', 'f'
  } ;
  
  public static char[] bytesToHex(byte[] raw) { 
    int length = raw.length;
    char[] hex = new char[length * 2];
    for (int i = 0; i < length; i++) { 
      int value = (raw[i] + 256) % 256;
      int highIndex = value >> 4;
      int lowIndex = value & 0x0f;
      hex[i * 2 + 0] = kDigits[highIndex];
      hex[i * 2 + 1] = kDigits[lowIndex];
    } 
    return hex;
  } 
  
  public static byte[] hexToBytes(char[] hex) { 
    int length = hex.length / 2;
    byte[] raw = new byte[length];
    for (int i = 0; i < length; i++) { 
      int high = Character.digit(hex[i * 2], 16);
      int low = Character.digit(hex[i * 2 + 1], 16);
      int value = (high << 4)  low;
      if (value > 127) value -= 256;
      raw[i] = (byte)value;
    } 
    return raw;
  } 
  
  public static byte[] hexToBytes(String hex) { 
    return hexToBytes(hex.toCharArray());
  } 

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人伊人精品色xxxx视频| 久久精品亚洲热| 8x拔播拔播x8国产精品| 久久久精品中文字幕| 九九热在线精品视频| 亚洲a级在线观看| 国产在线视频不卡| 国产区亚洲区欧美区| 97精品伊人久久久大香线蕉| 久久精品中文字幕免费mv| 亚洲一级一级97网| 久久国内精品一国内精品| 性欧美xxxx| 欧美性猛交xxxx乱大交3| 欧美一级电影在线| 91九色国产视频| 中文字幕亚洲在线| 国产日韩欧美自拍| 日本亚洲精品在线观看| 久久精品久久久久| 免费97视频在线精品国自产拍| 久久久久久国产精品| 成人午夜高潮视频| 精品亚洲一区二区三区四区五区| 午夜精品国产精品大乳美女| 久久精品最新地址| 欧美成人精品在线观看| 久久影院模特热| 日韩精品www| 国产欧美在线看| 亚洲女在线观看| 中文字幕日本精品| 日韩成人av网| 91av在线影院| 欧美刺激性大交免费视频| 中文字幕欧美日韩精品| 成人黄色生活片| 亚洲免费一级电影| 亚洲伊人第一页| 欧美在线视频免费| 欧美小视频在线观看| 欧美激情欧美激情| 狠狠色噜噜狠狠狠狠97| 欧美性精品220| 欧美在线观看网址综合| 亚洲老头同性xxxxx| 日韩国产欧美精品一区二区三区| 亚洲色图在线观看| 国产精品久久久久久久午夜| 欧美一区深夜视频| 亚洲精品乱码久久久久久金桔影视| 国产精品丝袜久久久久久高清| 日韩av在线免费看| 精品丝袜一区二区三区| 亚洲风情亚aⅴ在线发布| 亚洲色图综合网| 92裸体在线视频网站| 亚洲欧美日韩天堂一区二区| 精品国产老师黑色丝袜高跟鞋| 欧美大胆在线视频| 国产精品69精品一区二区三区| 久久久久成人网| 国产精品中文字幕在线| 麻豆乱码国产一区二区三区| 国产精品嫩草影院久久久| 国产香蕉精品视频一区二区三区| 国产精品久久77777| 中文字幕日韩有码| 欧美国产日韩免费| 精品调教chinesegay| 日韩欧美国产黄色| 亚洲网在线观看| 国产成人精品久久二区二区91| 91精品成人久久| www.日本久久久久com.| 欧美精品18videosex性欧美| 精品国产一区久久久| 欧美日韩国产精品一区二区不卡中文| 97久久精品在线| 97视频免费观看| 亚洲成人网在线| 欧美怡红院视频一区二区三区| 91成人在线视频| 中文字幕精品一区二区精品| 国产精品欧美日韩久久| 亚洲欧美在线一区二区| 国产这里只有精品| 欧美成人亚洲成人日韩成人| 成人免费网站在线看| 欧洲成人在线视频| 日韩av网站电影| 国产精品成人国产乱一区| 国产精品扒开腿做爽爽爽男男| 国产精品久久久久久久美男| 91嫩草在线视频| 国产精品亚洲美女av网站| 国内精品久久影院| 日韩在线免费av| 久久久久国产视频| y97精品国产97久久久久久| 久久天堂av综合合色| 久久99国产综合精品女同| 精品国产一区二区在线| 国产欧美日韩综合精品| 久久免费少妇高潮久久精品99| 国产在线观看91精品一区| 亚洲成人教育av| 最近2019中文字幕mv免费看| 77777亚洲午夜久久多人| 国产精品高清免费在线观看| 中文字幕一区二区三区电影| 久久久久久久久久久人体| 孩xxxx性bbbb欧美| 69视频在线免费观看| 欧美激情免费看| 国产日产欧美a一级在线| 国模精品视频一区二区| 中文字幕9999| 亚洲а∨天堂久久精品喷水| 国产人妖伪娘一区91| 在线免费观看羞羞视频一区二区| 国产亚洲人成a一在线v站| 久久91亚洲人成电影网站| 国产精品一香蕉国产线看观看| 91夜夜未满十八勿入爽爽影院| 国产精品国产自产拍高清av水多| 精品亚洲夜色av98在线观看| 亚洲电影免费观看高清| 亚洲视频精品在线| 久久久精品国产亚洲| 日韩电影网在线| 日日摸夜夜添一区| 2018中文字幕一区二区三区| 日韩欧美成人精品| 97国产一区二区精品久久呦| 日本欧美黄网站| 狠狠躁夜夜躁人人爽天天天天97| 亚洲欧美另类在线观看| 亚洲欧洲国产伦综合| 国产视频精品xxxx| 懂色aⅴ精品一区二区三区蜜月| 伊人一区二区三区久久精品| 中文字幕亚洲第一| 国产小视频国产精品| 国产成人精品网站| 91爱视频在线| 国产在线拍揄自揄视频不卡99| 亚洲欧美在线播放| 国产精品欧美激情| 国产精品人成电影在线观看| 亚洲精品一区二区久| 欧美成人剧情片在线观看| 在线免费观看羞羞视频一区二区| 欧美另类xxx| 国产精品久久久久久婷婷天堂| 欧美一区三区三区高中清蜜桃| 91最新在线免费观看| 97超视频免费观看| 亚洲最大成人免费视频| 久99久在线视频| 日本国产一区二区三区| 日本久久精品视频| 国产丝袜一区视频在线观看| 国产精品一区二区三区在线播放|