package com.gmail.chrnc0000;
import java.util.*;
import java.lang.reflect.Field;
import java.math.BigInteger;
import java.security.MessageDigest;
public class Helper {
/**
* 传入一个目标日期的long 值,传一个int的偏移量,计算出偏移日期.
*/
public static long getNewDate(long originalDate, int dayForward) {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.setTimeInMillis(originalDate);
cal.set(cal.DAY_OF_MONTH, cal.get(cal.DAY_OF_MONTH) + dayForward);
return cal.getTimeInMillis();
}
/**
* 取得 sourceString 的 baseType进制的md5值 ,加密用 ,多少程序能允许明文存放密码呢?
*
*/
public static String toMD5String(String sourceString, int baseType) throws Exception {
String arg = "MD5";
String tmp = sourceString + "";
MessageDigest messagedigest = MessageDigest.getInstance(arg);
byte abyte0[] = tmp.getBytes();
for (int i = 0; i < tmp.length(); i++) {
messagedigest.update(abyte0, 0, i);
}
byte abyte1[] = messagedigest.digest();
BigInteger biginteger = new BigInteger(abyte1);
return biginteger.toString(baseType);
}
/**
* 检查字符串是不是为空,spring util类的写发,我直接copy过来的.
*/
public static boolean hasLength(String str) {
return (str != null && str.length() > 0);
}
private static void changeFieldAccessAttri(java.lang.reflect.Field[] objs) throws Exception {
for (int i = 0; i < objs.length; i++) {
objs[i].setAccessible(true);
}
}
public static java.lang.reflect.Field[] getAllFields(java.lang.Class clazz) throws Exception {
ArrayList list = new ArrayList();
getAllFields(list, clazz);
java.lang.reflect.Field[] retValue = (java.lang.reflect.Field[]) list.toArray(new java.lang.reflect.Field[list.size()]);
changeFieldAccessAttri(retValue);
return retValue;
}
public static HashMap getAllValue(Object obj) throws Exception {
java.lang.reflect.Field[] fields = getAllFields(obj.getClass());
HashMap<Field, Object> map = new HashMap<Field, Object>();
for (int i = 0; i < fields.length; i++) {
map.put(fields[i], fields[i].get(obj));
}
return map;
}
private static void getAllFields(ArrayList<Field> list, java.lang.Class clazz) {
java.lang.reflect.Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
list.add(fields[i]);
}
java.lang.Class supperClass = clazz.getSuperclass();
if (!supperClass.equals(Object.class)) {
getAllFields(list, supperClass);
}
}
/**
* 在两个range之间取得整型随即数值.
*/
public static int getRandomValue(int startRange, int endValue) throws Exception {
if (startRange < 0 || endValue < 0) {
throw new IllegalArgumentException("start range and end value both must be positive");
}
if (startRange > endValue) {
throw new IllegalArgumentException("start tange must be greater equal than end value.");
}
// endValue += 1;
if (startRange == endValue) {
return endValue;
}
Random rand = new Random();
int retValue = -1;
while (retValue < startRange) {
retValue = rand.nextInt(endValue);
}
return retValue;
}
/**
* 在多个Object里面随即取一个出来.不知道哪里能用上.
*/
public static Object getRandomObject(Object[] objs) throws Exception {
if (objs != null && objs.length > 0) {
return objs[getRandomValue(0, objs.length)];
} else {
return null;
}
}
/**
* 返回给定的字符串反转过来后的字符串.
*/
public static String getReversedString(String str) throws Exception {
StringBuffer sb = new StringBuffer(str);
return sb.reverse().toString();
}
/**
* 把一个字符串数组用给定的分隔符连接起来,JavaScript 里面默认是使用","连接的,这里没有.
*/
public static String jionStringArray(String[] strs, String separator) throws Exception {
if (strs == null || strs.length == 0) {
return "";
}
if (!hasLength(separator)) {
separator = "";
}
StringBuffer sb = new StringBuffer();
boolean isFirst = true;
for (int i = 0; i < strs.length; i++) {
if (isFirst) {
sb.append(strs[i]);
isFirst = false;
} else {
sb.append(separator).append(strs[i]);
}
}
return sb.toString();
}
/**
* just for fun.
*/
public static String[] getRandomStringArray(int wordMaxLength, int sectionMaxLength) throws Exception {
String[] source = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
int sectionlength = getRandomValue(0, sectionMaxLength);
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < sectionlength; i++) {
int wordLength = getRandomValue(0, wordMaxLength);
StringBuffer sb = new StringBuffer();
for (int j = 0; j < wordLength; j++) {
String tmpValue = (String) getRandomObject(source);
sb.append(tmpValue);
}
list.add(sb.toString());
}
String[] listValues = (String[]) list.toArray(new String[list.size()]);
return listValues;
}
/**
* 把数组里面的对象顺序放到 ArrayList里面返回.这个code写的有点磕碜啦~
* @param objs
* @return
* @throws Exception
*/
public static ArrayList fillToArray(Object[] objs) throws Exception {
ArrayList<Object> array = new ArrayList<Object>();
if(objs == null ){
return array;
}
for (int i = 0; i < objs.length; i++) {
array.add(objs[i]);
}
return array;
}
/**
* 单纯给数字排序的业务逻辑并不多,这里给出了按照属性给VO等排序的方法,如方法名所描述,fieldName对应的属性需要是数字.
*/
public static void sortByNumberField(ArrayList list,String fieldName) throws Exception{
java.lang.reflect.Field[] fields = getAllFields(list.get(0).getClass());
java.lang.reflect.Field field = null;
for(int i=0;i<fields.length;i++){
if(fields[i].getName().equals(fieldName)){
field = fields[i];
break;
}
}
if(field == null){
throw new Exception("field does not exist.");
}
com.gmail.chrnc0000.Comparator comp = new com.gmail.chrnc0000.Comparator(field);
Collections.sort(list,comp);
}
/**
* 返回给定的object的json 格式的字符串,当前版本只对java.lang.*的属性转换.
*/
public static String toJSONString(Object obj) throws Exception{
if(obj == null){
return null;
}
StringBuffer sb = new StringBuffer("{");
java.lang.reflect.Field[] fields = getAllFields(obj.getClass());
HashMap valueMap = getAllValue(obj);
boolean isFirst = true;
for(int i=0;i<fields.length;i++){
Object value = valueMap.get(fields[i]);
if(value == null ) value = "";
String valueClassName = value.getClass().getName();
valueClassName = valueClassName.replace("[", "");
if(valueClassName.startsWith("Ljava.lang.") || valueClassName.startsWith("java.lang.")){
String fieldName = fields[i].getName();
if(!isFirst){
sb.append(",");
}
sb.append(fieldName).append(":");
sb.append(getLangTypeJSONString(value));
isFirst = false;
}
}
return sb.append("}").toString();
}
private static String getLangTypeJSONString(Object obj) throws Exception{
boolean isNull = false;
if(obj == null) {
obj = "null";
isNull = true;
}
String valueClassName = obj.getClass().getName();
valueClassName = valueClassName.replace("[", "");
if(valueClassName.startsWith("java.lang.")){
if(isNull){
return obj.toString();
}else{
return "'"+obj.toString()+"'";
}
}
if(valueClassName.startsWith("Ljava.lang.")){
Object[] objs = (Object[])obj;
StringBuffer sb = new StringBuffer("[");
boolean isFirst = true;
for(int i=0;i<objs.length;i++){
if(!isFirst){
sb.append(",");
}
sb.append(getLangTypeJSONString(objs[i]));
isFirst = false;
}
return sb.append("]").toString();
}
return null;
}
/**
* test function.
* @param test
* @return
*/
public static String getTestJSONStr(String test){
System.out.println(test);
VO vo = new VO();
try {
System.out.println(toJSONString(vo));
return toJSONString(vo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public String toString(){
return "com.gmail.chrnc0000.Helper";
}
}
/**
* just for test.
* @author Administrator
*
*/
final class VO {
String strs[][] = {null,{"sdf",null},{"sdf","ggds"},{"wer","saw"}};
Hashtable table = new Hashtable();
String name = "backend returned value";
int age = 12;
String sysLoginID;
String password = "sdf";
}
final class Comparator implements java.util.Comparator {
java.lang.reflect.Field field = null;
public Comparator(java.lang.reflect.Field field) {
this.field = field;
}
public int compare(Object arg0, Object arg1) {
try {
Object fieldValue0 = field.get(arg0);
Object fieldValue1 = field.get(arg1);
if (Double.parseDouble(fieldValue0.toString()) > Double.parseDouble(fieldValue1.toString())) {
return 1;
} else if (Double.parseDouble(fieldValue0.toString()) < Double.parseDouble(fieldValue1.toString())) {
return -1;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return 0;
}
}
分享到:
相关推荐
对Md5加密对象的封装类,方便在开发过程中直接使用
c# MD5Helper处理md5加密算法
该工具类使用于spring boot 开发,返回值为md5加密后的字符串,参数为字符串,一般用于加密密码。为了防止MD5加密的密码能被反译回明文。所以建议传入的密码字符串必须由数字字母和特殊字符组成。本人上传的表单验证...
MD5帮助类。生成MD5加密字符串 public static string CretaeMD5(string fileName) { string hashStr = string.Empty; try { FileStream fs = new FileStream( fileName, FileMode.Open, FileAccess.Read,
Public class ImageHelper 图片处理帮助类 Public class ImageUpload 图片上传类 Public class INIFileHelper INI文件读写类。 Public class IpHelper 共用工具类 Public class JavaScriptHelper JavaScript...
代码如下:using System;using System.Collections.Generic;.../// <summary>/// 加解密/// </summary>public static class CryptHelper{ #region RSA加密 /// /// 用指定公钥加密文本 /// /// <param n
12.Base64加密解密 MyBase64Helper.cs MD5加密等操作辅助类 MyMD5Helper.cs 13.鼠标辅助操作类,提供获取鼠标状态以及模拟鼠标点击等操作 MyMouseHelper.cs 14.中文转拼音的辅助类 MyPinYinHelper.cs 15.字符串类型...
12.Base64加密解密 MyBase64Helper.cs MD5加密等操作辅助类 MyMD5Helper.cs 13.鼠标辅助操作类,提供获取鼠标状态以及模拟鼠标点击等操作 MyMouseHelper.cs 14.中文转拼音的辅助类 MyPinYinHelper.cs 15.字符串类型...
这里面实现了很多的帮助方法,比如正则验证,加密,解密,MD5加密,字符串的处理等操作。 2.最新的 PageValidate 类 主要是实现了验证,是否为空,是否为数字等。 3.JavascriptHelp 帮助输出简单的JS代码 4.最新...
签名可能用到MD5,SHA1,加解密可能用到3DES,AES,RSA等。加密数据传输一般以字符串形式,通常会用到BASE64,HEX转换工具。 一、JAVA方式 笔者搜集了上面提到的主要几种加解密方式及转换的实现,在此分享出来供...
MD5Helper:把1个字符串使用MD5/SHA(哈希)加密后,返回该加密后的字符串。 AppSecretConfig:通过该类中的方法,从“appsettings.json”配置文件中获取安全加密相关的数据信息。 TokenModelJwt:在用户登录成功后,...
C#Encrypt--Encrypt加密/Encrypt解密/附加有MD5加密,个人感觉很不错的一个加密类 HashEncode 哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security...
C#Encrypt--Encrypt加密/Encrypt解密/附加有MD5加密,个人感觉很不错的一个加密类 HashEncode 哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security...
基于Base64的加密编码(Base64Util.cs)字符串的加密/解密(EncodeHelper.cs)MD5各种长度加密字符、验证MD5等操作辅助类(MD5Util.cs)QQ的EncryptUtil(QQEncryptUtil.cs) 非对称加密验证辅助类(RSASecurityHelper.cs...
获取字符串的md5加密值 RandomHelper 获取指定位数随机数 ShortUUIDHelper 获取22位短UUID值 FileHelper 文件处理助手,删除文件及文件夹 ZipHelper 压缩解压文件 Office2pdfHelper office文档转pdf,目前仅支持...
1.DataTable帮助类(DataTableHelper.cs) 2.Access数据库文件操作辅助类(JetAccessUtil.cs) 3.常用的Access数据库Sql操作辅助类库(OleDbHelper.cs) 4.根据各种不同数据库生成不同【分页语句的辅助类】 ...
1.DataTable帮助类(DataTableHelper.cs) 2.Access数据库文件操作辅助类(JetAccessUtil.cs) 3.常用的Access数据库Sql操作辅助类库(OleDbHelper.cs) 4.根据各种不同数据库生成不同【分页语句的辅助类】 ...
获取包名,版本名,版本号,文件MD5,打包时间 查壳功能,支持获取爱加密,360加固,梆梆加固,阿里云加固,腾讯乐固,百度加固,娜迦加固,顶象加固,通付盾,网秦,几维加固等壳信息 支持提取高清图标 支持...
常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN...
2012-06-12 12:51 1,826,942 md5加密算法源代码.rar 2012-06-12 11:48 79,221 MFC音乐播放器(滑块控制音量).zip 2012-06-12 13:01 74,769 MyQQ-VC开发的局域网通信程序.rar 2012-06-12 12:18 1,154 N个数中1的个数....