package cn.timer.api.utils;

import java.io.UnsupportedEncodingException;

//import org.apache.shiro.crypto.hash.SimpleHash;

/**
 * 
 * @ClassName: Encrypt
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author TZQ chess222_com
 * @date 2019年3月2日 下午12:31:49
 *
 */
public class Encrypt {
	/*
	 * 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,
	 * 常见的散列算法如MD5、SHA等。一般进行散列时最好提供一个salt(盐),比如加密密码“admin”,
	 * 产生的散列值是“21232f297a57a5a743894a0e4a801fc3”, 可以到一些md5解密网站很容易的通过散列值得到密码“admin”,
	 * 即如果直接对密码进行散列相对来说破解更容易,此时我们可以加一些只有系统知道的干扰数据,
	 * 如用户名和ID(即盐);这样散列的对象是“密码+用户名+ID”,这样生成的散列值相对来说更难破解。
	 */
	// 高强度加密算法,不可逆
	/**
	 * 
	 * @Title: Encrypt
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @param
	 * @param password
	 * @param salt
	 * @return
	 */
//	public static String md5(String password, String salt) {
//
//		Object tokenCredentials = new SimpleHash("md5", password, salt, 2).toHex();
//		return (String) tokenCredentials;
//	}

	public static String myEncode(String str) throws UnsupportedEncodingException {
		byte[] strBytes = str.getBytes("utf-8");
		byte[] newStrByte = new byte[strBytes.length];
		for (int i = 0; i < strBytes.length; i++) {
			newStrByte[i] = (byte) (strBytes[i] ^ 0x01);
		}
		return new String(newStrByte);
	}

	public static String myEncode1(String str) throws UnsupportedEncodingException {
		byte[] strBytes = str.getBytes("utf-8");
		byte[] newStrByte = new byte[strBytes.length];
		for (int i = 0; i < strBytes.length; i++) {
			newStrByte[i] = (byte) (strBytes[i] ^ 0x01);
		}
		return new String(newStrByte);
	}

	public static String myEncode2(Integer i) {

		char[] cs = String.valueOf(i).toCharArray();
		String aString = "";
		int i1 = 0;
		for (char c : cs) {
			i1 += c;
		}

		for (char c : cs) {
			i1 += c;
		}

		System.out.println(i1);

		return aString;
	}

	public static void main(String[] args) {
		char a = 49;
		int i = '1';
		System.out.println(a);
		System.out.println(i);

		System.out.println(myEncode2(105000));

	}

}