📄 jahiakeygen.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .//////// JahiaKeyGen// NK 18.04.2001//// NK 02.05.2001 // bug severe , utilisation de Random() car system.currentTimeMillis n'est pas al閍toire comme seed !!//package org.jahia.utils.keygenerator;import java.util.Random;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import org.jahia.exceptions.JahiaException;import org.jahia.utils.Base64;import org.jahia.utils.JahiaTools;/** * Random Key Generator * * @author NK */public class JahiaKeyGen{ /** * The MersenneTwisterFast instance * **/ /* private static MersenneTwisterFast mtfRandom = null; static { mtfRandom = new MersenneTwisterFast(); } */ static String mLastKey = ""; //-------------------------------------------------------------------------- /** * Return a random String key. * * @author NK * @return String a random key */ public static synchronized String getKey(){ MersenneTwisterFast mtfRandom = new MersenneTwisterFast(); Random rd = new Random(); mtfRandom.setSeed(rd.nextLong()); String k = Long.toString(mtfRandom.nextLong()); while ( k.equals(mLastKey) || k.startsWith("-") ){ mtfRandom.setSeed(rd.nextLong()); k = Long.toString(mtfRandom.nextLong()); } mLastKey = k; return k; } //-------------------------------------------------------------------------- /** * Return a random String key with initialization. * Initalize the pseudo random number generator. * * @author NK * @param long the seed * @return String a random key */ public static synchronized String getKey(long seed){ MersenneTwisterFast mtfRandom = new MersenneTwisterFast(); mtfRandom.setSeed(seed); String k = Long.toString(mtfRandom.nextLong()); while ( k.equals(mLastKey) || k.startsWith("-") ){ k = Long.toString(mtfRandom.nextLong()); } mLastKey = k; return k; } //-------------------------------------------------------------------------- /** * Return a random String key limited to n characters. * * @author NK * @return int number of char * @return String a random key */ public static synchronized String getKey(int n){ MersenneTwisterFast mtfRandom = new MersenneTwisterFast(); Random rd = new Random(); mtfRandom.setSeed(rd.nextLong()); String k = encrypt(Long.toString(mtfRandom.nextLong())); while ( k.equals(mLastKey) || k.startsWith("-") || (k.length()<n) ){ mtfRandom.setSeed(rd.nextLong()); k = encrypt(Long.toString(mtfRandom.nextLong())); } String result = JahiaTools.replacePattern(k,"+","01"); result = JahiaTools.replacePattern(result,"/","10"); result = JahiaTools.replacePattern(result,"=","11"); mLastKey = k; return result.substring(0,n); } /** * Encrypt a specified using the SHA algorithm. * * @param string to encrypt * * @return String the encrypted string or null on any failure */ private static String encrypt (String data) { if (data == null) { return null; } if (data.length() == 0) { return null; } String result = null; try { MessageDigest md = MessageDigest.getInstance ("SHA-1"); if (md != null) { md.reset (); md.update (data.getBytes()); result = new String(Base64.encode (md.digest())); } md = null; } catch (NoSuchAlgorithmException ex) { result = null; } return result; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -