📄 password.java
字号:
package jp.co.sjts.gsession.main;
/*
* 儐乕僓僨乕僞 Password.java
* Copyright (C) 1999-2000 Japan Total System Co,LTD
* Satoru K <koni@sjts.co.jp>
*/
import java.io.Serializable;
import java.util.Collections;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import jp.co.sjts.gsession.tools.*;
public class Password implements Cloneable,IPassword,Serializable
{
// 僟僀僕僃僗僩嶌惉梡丂曄峏偟偰僐儞僷僀儖偡傞傋偒両両
private static final String passphrase = "Gsession";
private String User; // 儐乕僓幆暿
private String mdPass; // 埫崋壔僷僗儚乕僪
private int UserID; // 儐乕僓ID
private Map GroupMap = null; // 僌儖乕僾IDs & Auth
private String Name; // 儐乕僓柤
private String LastLoginTime; // 慜夞儘僌僀儞帪娫
public String GetUser() { return new String(User); }
public int GetUserID() { return UserID; }
public String GetName() { return new String(Name); }
public String GetLastLoginTime() { return new String(LastLoginTime); }
public synchronized IPassword.GroupAuth[] GetGroupAuthArray(){
Collection collection = GroupMap.values();
if(collection.size()>0)
return (IPassword.GroupAuth[])collection.toArray(new IPassword.GroupAuth[1]);
else
return null;
}
public synchronized IPassword.GroupAuth GetGroupAuth(int gid){
return (IPassword.GroupAuth)GroupMap.get(new Integer(gid));
}
public synchronized void SetMDPass(String mdPass){
this.mdPass = mdPass;
}
public synchronized String GetMDPass(){
return mdPass;
}
// 儘僌僆儞梡偺儐乕僓幆暿愝掕
public synchronized void SetUser(String User){
this.User = User;
}
public synchronized void SetName(String Name){
this.Name = Name;
}
public synchronized void SetLastLoginTime(String LastLoginTime){
this.LastLoginTime = LastLoginTime;
}
public Object clone() throws java.lang.CloneNotSupportedException
{
return super.clone();
}
/*
* 僐儞僗僩儔僋僞
*/
public Password(String User,String mdPass,String UserID,String groupids,String Name,String LastLoginTime)
{
this.User = User;
this.mdPass = mdPass;
this.UserID = Integer.parseInt(UserID);
this.Name = Name;
this.LastLoginTime = LastLoginTime;
GroupMap = Collections.synchronizedMap(new HashMap());
StringTokenizer st = new StringTokenizer(groupids,":");
while(st.hasMoreTokens())
{
IPassword.GroupAuth ga;
String group = st.nextToken();
if(group.endsWith("a"))
{// 偙偺僌儖乕僾偺娗棟幰尃尷傪帩偭偰偄傞
String gid = group.substring(0,group.length()-1);
ga = new IPassword.GroupAuth(Integer.parseInt(gid),AUTH_ADMIN);
}else
{// 偙偺僌儖乕僾偺堦斒儐乕僓偱偁傞
ga = new IPassword.GroupAuth(Integer.parseInt(group),AUTH_NORMAL);
}
GroupMap.put(new Integer(ga.GID),ga);
}
}
public Password(String User,String mdPass,int UserID,int[] groupids,String Name,String LastLoginTime)
{
this.User = User;
this.mdPass = mdPass;
this.UserID = UserID;
this.Name = Name;
this.LastLoginTime = LastLoginTime;
GroupMap = Collections.synchronizedMap(new HashMap());
for(int i=0;i<groupids.length;i++)
{
IPassword.GroupAuth ga;
ga = new IPassword.GroupAuth(groupids[i],AUTH_NORMAL);
GroupMap.put(new Integer(ga.GID),ga);
}
}
/*
* 僌儖乕僾偺捛壛
* in: gid(int) 捛壛偡傞僌儖乕僾偺ID
* auth(int) 尃尷
*
* out: 側偟
*/
public synchronized void AddGroup(int gid,int auth)
{
synchronized(GroupMap) {
GroupMap.put(new Integer(gid),new IPassword.GroupAuth(gid,auth));
}
}
/*
* 僌儖乕僾偺嶍彍
* in: gid(int) 嶍彍偡傞僌儖乕僾偺ID
*
* out: 側偟
*/
public synchronized void DelGroup(int gid)
{
synchronized(GroupMap) {
GroupMap.remove(new Integer(gid));
}
}
/*
* 暥帤楍昞尰傪曉偡
* in: 側偟
* out:(String)暥帤楍昞尰
*/
public synchronized String toString()
{
synchronized(GroupMap) {
String buf = "";
Iterator it = GroupMap.values().iterator();
while(it.hasNext())
{
IPassword.GroupAuth ga = (IPassword.GroupAuth)it.next();
buf += Integer.toString(ga.GID);
if(ga.Auth==AUTH_ADMIN)
buf += "a";
buf += ":";
}
if(buf.length()>0)
buf = buf.substring(0,buf.length()-1);
return User+","+mdPass+","+UserID+","+buf+","
+GSTool.delimitEncorde(",",Name)+","+LastLoginTime;
}
}
/*
* 僷僗儚乕僪偺僄儞僐乕僪傪峴側偆(MD5偱埫崋壔偟丄Base64偱晞崋壔)
* in: Pass(byte[]) 埫崋慜偺Byte攝楍
* out:(String) 埫崋壔偟偨寢壥
*/
public static String encode(byte[] pass) throws GSException
{
if(pass.length == 0)
return "";
String mdpassstring=null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(passphrase.getBytes());
byte[] mdpass = md.digest(pass);
mdpassstring = Base64.encode(mdpass);
} catch(NoSuchAlgorithmException e) {
throw new GSException(e.toString());
}
return mdpassstring;
}
/*
* 僷僗儚乕僪僠僃僢僋
* in: pass(String) 埫崋壔偝傟偰偄側偄僷僗儚乕僪
* out: (boolean) 僷僗儚乕僪偑擣傔傜傟偨傜(ture) 偦傟埲奜偼(false)
*/
public synchronized boolean isEqualPass(String pass) throws GSException
{
pass = pass.trim();
if((pass.length()==0) && (mdPass.length()==0))
return true;
String mdpass = encode(pass.getBytes());
return mdPass.equals(mdpass);
}
/**
* 強懏偟偰偄傞僌儖乕僾ID攝楍傪庢摼
*/
public synchronized int[] getGroups()
{
int[] groups=null;
synchronized(GroupMap) {
int size = GroupMap.size();
if(size>0)
{
groups= new int[size];
Iterator it = GroupMap.values().iterator();
for(int i=0;it.hasNext();i++)
{
IPassword.GroupAuth ga = (IPassword.GroupAuth)it.next();
groups[i] = ga.GID;
}
}
}
return groups;
}
/**
* 僌儖乕僾娗棟幰尃尷傪帩偭偰偄傞僌儖乕僾ID攝楍傪庢摼
*/
public synchronized int[] getGroupAdminGroups()
{
int[] groupadmins = null;
synchronized(GroupMap) {
if(GroupMap.size()==0)
return null;
ArrayList list = new ArrayList();
Iterator it = GroupMap.values().iterator();
while(it.hasNext()) {
IPassword.GroupAuth ga = (IPassword.GroupAuth)it.next();
if(ga.Auth == IPassword.AUTH_ADMIN) {
list.add(new Integer(ga.GID));
}
}
if(list.size()==0)
return null;
groupadmins = new int[list.size()];
it = list.iterator();
for(int i=0;it.hasNext();i++)
groupadmins[i] = ((Integer)it.next()).intValue();
}
return groupadmins;
}
// 巜掕偝傟偨僌儖乕僾偵強懏偟偰偄傞偐
public boolean existsGroup(int gid)
{
synchronized(GroupMap) {
if(GroupMap.get(new Integer(gid))!=null)
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -