package org.bamboo.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Utilities {
public static void main(String[] args) {
System.out.println(encryptKey("123"));
System.out.println(decryptKey(""));
}
public static String generateTransactionID() {
String time = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
int random_digit = (int) Math.round(Math.random() * 100.0D);
String append = "" + random_digit;
if ((random_digit > 0) && (random_digit < 10)) {
append = "0" + random_digit;
}
time = time + append;
return time;
}
private static String keyvalue1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ9876543210abcdefhgijklmnopqrstuvwxyz";
private static String keyvalue2 = "D96Ze54h0abcdfginjkXJlVmopqY1rstO2uvwPxyzABCESF8GHIKL7MNQR3TUW";
// private static String keyvalue1 =
// "ABCDEFGHIJKLMNOPQRSTUVWXYZ9876543210abcdefhgijklmnopqrstuvwxyz";
// private static String keyvalue2 =
// "Y97Ze54h0abcdfginjkXJlVmopqD1rstO2uvwPxyzABCESF8GHIKL6MNQR3TUW";
public static String decryptKey(String s) {
String s1 = s.substring(0, 2);
String s2 = s.substring(s.length() - 3, s.length());
String s3 = (new StringBuilder()).append(s1).append(s2).toString();
s = s.substring(2, s.length() - 3);
int ai[] = new int[5];
for (int i = 0; i < ai.length; i++)
ai[i] = Integer.parseInt((new StringBuilder()).append("").append(
s3.charAt(i)).toString());
String s4 = "";
int j = 0;
for (int k = 0; k < s.length(); k++) {
char c = s.charAt(k);
int l = keyvalue2.indexOf(c);
if (l >= 0) {
l -= ai[j];
if (l < 0)
l += keyvalue2.length();
l %= keyvalue1.length();
char c1 = keyvalue1.charAt(l);
s4 = (new StringBuilder()).append(s4).append(c1).toString();
j = ++j % ai.length;
} else {
s4 = (new StringBuilder()).append(s4).append(c).toString();
}
}
return s4;
}
public static String encryptKey(String s) {
String s1 = "";
String s2 = "";
int ai[] = new int[5];
Random random = new Random(System.currentTimeMillis());
for (int i = 0; i < ai.length; i++) {
int k = random.nextInt() % 10;
if (k < 0)
k *= -1;
ai[i] = k;
s2 = (new StringBuilder()).append(s2).append(k).toString();
}
int j = 0;
for (int l = 0; l < s.length(); l++) {
char c = s.charAt(l);
int i1 = keyvalue1.indexOf(c);
if (i1 >= 0) {
i1 += ai[j];
i1 %= keyvalue2.length();
char c1 = keyvalue2.charAt(i1);
s1 = (new StringBuilder()).append(s1).append(c1).toString();
j = ++j % ai.length;
} else {
s1 = (new StringBuilder()).append(s1).append(c).toString();
}
}
s1 = (new StringBuilder()).append(s2.substring(0, 2)).append(s1)
.append(s2.substring(2, s2.length())).toString();
return s1;
}
public static String formatPrice(double remain, String pattern) {
String finalFig = null;
try {
BigDecimal bd = new BigDecimal(remain);
// logger.debug(">>> remain = "+remain);
bd = bd.setScale(2, BigDecimal.ROUND_UNNECESSARY);
DecimalFormat myFormatter = new DecimalFormat(pattern);
finalFig = myFormatter.format(bd);
if (finalFig.endsWith(".00") == false) {
if (finalFig.indexOf(".") < 0) {
finalFig = finalFig + ".00";
} else {
if (finalFig.endsWith(".0")) {
finalFig = finalFig + "0";
}
if (finalFig.lastIndexOf(".") == (finalFig.length() - 2)) {
finalFig = finalFig + "0";
}
}
} else {
if (finalFig.lastIndexOf(".") == (finalFig.length() - 2)) {
finalFig = finalFig + "0";
}
}
return finalFig;
} catch (Exception ex) {
// logger.debug(">>> finalFig ex = "+ex.getMessage());
finalFig = remain + "";
if (finalFig != null) {
// logger.debug(">>> finalFig = "+finalFig);
if (finalFig.lastIndexOf(".") == (finalFig.length() - 2)) {
finalFig = finalFig + "0";
} else {
BigDecimal bd = new BigDecimal(remain);
// logger.debug(">>> remain = "+remain);
bd = bd.setScale(4, BigDecimal.ROUND_UP);
DecimalFormat myFormatter = new DecimalFormat(pattern);
finalFig = myFormatter.format(bd);
}
}
return finalFig;
}
}
}