?? assocket.java
字號:
/**
* AS服務器
*/
package src;
import java.io.*;
import java.net.*;
import java.security.*;
public class ASSocket {
byte[] ID_TGS, TS_TGS, lifetime, ticket_TGS;
private Socket clientSocket;
private ServerSocket serverSocket;
private ObjectInputStream in;
private ObjectOutputStream out;
private int port;
public ASSocket(int port) {
this.port = port;
try {
serverSocket = new ServerSocket(port);
System.out.println("AS 服務器運行中.....");
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(){
while (true) {
try {
clientSocket = serverSocket.accept();
/**
* (1)C->AS: IDc || ADc || TS1
* (2)AS->C: Epub-c[IDtgs || TS2 || Lifttime1 || Tickettgs],
* Tickettgs = Epub-tgs[Kpub-c || IDc || ADc || IDtgs || TS2 || Lifetime1]
*/
in = new ObjectInputStream(clientSocket.getInputStream());
out = new ObjectOutputStream(clientSocket.getOutputStream());
Object inObject = in.readObject();
if(inObject instanceof C_AS){
System.out.println("receive a C2AS/AS 獲得了從客戶端發(fā)來的消息");
C_AS c_as = (C_AS)inObject;
String IDc = c_as.getIDc();
String ADc = c_as.getADc();
long TS2 = Utils.getCurrentTime();
byte[] IDc_byte = IDc.getBytes(Utils.UTF);
byte[] ADc_byte = ADc.getBytes(Utils.UTF);
byte[] IDtgs_byte = Utils.ID_TGS.getBytes(Utils.UTF);
long lifeTime = Utils.LIFETIME;
//生成Tickettgs
AESCryptography aes = new AESCryptography();
Object keyObjectAES = Utils.getKey(Utils.KEY_PATH, Utils.TGS_KEY + Utils.AES_POSTFIX);
Key AESkey = (Key)keyObjectAES;
byte[] IDc_Cipher_byte_tgs = aes.encrypt_decrypt(IDc_byte, AESkey, true);
byte[] ADc_Cipher_byte_tgs = aes.encrypt_decrypt(ADc_byte, AESkey, true);
byte[] IDtgs_Cipher_byte_tgs = aes.encrypt_decrypt(IDtgs_byte, AESkey, true);
Ticket_tgs ticket = new Ticket_tgs(IDc_Cipher_byte_tgs, ADc_Cipher_byte_tgs, IDtgs_Cipher_byte_tgs, TS2, lifeTime);
//生成AS->C
RSACryptography rsa = new RSACryptography();
Object keyObjectRSA = Utils.getKey(Utils.KEY_PATH, Utils.PUBLIC_CLIENT_KEY + Utils.RSA_POSTFIX);
Key RSAkey = (Key)keyObjectRSA;
byte[] IDtgs_Cipher_byte = rsa.encrypt_decrypt(IDtgs_byte, RSAkey, true);
AS_C as_c = new AS_C(IDtgs_Cipher_byte, ticket, TS2, lifeTime);
if(IDc.equals("test"))
out.writeObject(as_c);
else
out.writeObject("false");
}else{
System.out.println("as error");
out.writeObject("as error");
}
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("As上通過");
System.out.println("As已經(jīng)向客戶端發(fā)送消息");
}
}
public static void main(String[] args){
ASSocket as = new ASSocket(5000);
as.start();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -