mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-16 21:13:23 +01:00
98 lines
2.6 KiB
Java
Executable File
98 lines
2.6 KiB
Java
Executable File
/**
|
|
* EGroupware - Notifications Java Desktop App
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package notifications
|
|
* @subpackage jdesk
|
|
* @link http://www.egroupware.org
|
|
* @author Stefan Werfling <stefan.werfling@hw-softwareentwicklung.de>
|
|
* @author Maik Hüttner <maik.huettner@hw-softwareentwicklung.de>
|
|
*/
|
|
|
|
package egroupwaretray;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.InputStream;
|
|
import java.net.InetAddress;
|
|
import java.net.NetworkInterface;
|
|
import java.net.UnknownHostException;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
|
|
/**
|
|
* egwPasswordCrypt
|
|
*
|
|
* @author Stefan Werfling <stefan.werfling@hw-softwareentwicklung.de>
|
|
*/
|
|
public class egwPasswordCrypt
|
|
{
|
|
private String getMacAddress()
|
|
{
|
|
try
|
|
{
|
|
InetAddress ip = InetAddress.getLocalHost();
|
|
|
|
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
|
|
|
|
byte[] mac = network.getHardwareAddress();
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
for( int i=0; i<mac.length; i++ )
|
|
{
|
|
sb.append(String.format("%02X%s",
|
|
mac[i], (i < mac.length - 1) ? "-" : ""));
|
|
}
|
|
|
|
return sb.toString();
|
|
}
|
|
catch( Exception ex )
|
|
{
|
|
Logger.getLogger(egwPasswordCrypt.class.getName()).log(Level.SEVERE, null, ex);
|
|
}
|
|
|
|
|
|
return "00-00-00-00-00-00";
|
|
}
|
|
|
|
private String sysKey()
|
|
{
|
|
String systemkey = "";
|
|
|
|
systemkey += System.getProperty("os.name");
|
|
systemkey += System.getProperty("os.version");
|
|
systemkey += System.getProperty("os.arch");
|
|
systemkey += System.getProperty("user.name");
|
|
systemkey += System.getProperty("user.home");
|
|
systemkey += this.getMacAddress();
|
|
|
|
return HexString.getMD5Hash(systemkey);
|
|
}
|
|
|
|
public String encode(String password) throws Exception
|
|
{
|
|
String systemkey = this.sysKey();
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
|
CryptDES des = new CryptDES();
|
|
des.encode(password.getBytes(), out, systemkey.substring(0, 8));
|
|
|
|
String back = HexString.byteArrToHexString(out.toByteArray());
|
|
|
|
return back;
|
|
}
|
|
|
|
public String decode(String password) throws Exception
|
|
{
|
|
String systemkey = this.sysKey();
|
|
byte[] decode = HexString.hexStringToByteArray(password);
|
|
|
|
CryptDES des = new CryptDES();
|
|
InputStream is = new ByteArrayInputStream(decode);
|
|
String back = new String(des.decode(is, systemkey.substring(0, 8)));
|
|
|
|
return back;
|
|
}
|
|
}
|