`
itace
  • 浏览: 178601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

加密解密类

    博客分类:
  • java
 
阅读更多
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;

import org.apache.commons.codec.StringEncoder;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;

public class EncodingUtil {
	
	private static char[] m = {'0','1','2','3','4','5','6','7','8','9','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','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'};
	/**
	 * 
	 * enc(ISO-8859-1)转UTF-8
	 * @param s
	 * @param enc:ISO-8859-1
	 * @return
	 */
	public static String toUTF8(String s,String enc){
		if (s==null) {
			return null;
		}
		Charset charset = Charset.forName(enc);
		CharsetEncoder ce = charset.newEncoder();
		if (ce.canEncode(s)) {
			try {
				String t = new String(s.getBytes(enc),"UTF-8");
				return t;
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
				return s;
			}
		}else{
			return s;
		}
	}
	/**
	 * base64加密
	 * @param text
	 * @return
	 */
	public static String encodeBase64(String text) {
		byte[] b = text.getBytes();
		Base64 base64 = new Base64();
		String s = new String(base64.encode(b));
		return s;
	}
	/**
	 * base64解密
	 * @param text
	 * @return
	 */
	public static String decodeBase64(String encodeStr) {
		byte[] b = encodeStr.getBytes();
		Base64 base64 = new Base64();
		String s = new String(base64.decode(b));
		return s;
	}
	/**
	 * MD5加密
	 * @param text
	 * @return
	 */
	public static String toMD5(String text){
		return DigestUtils.md5Hex(text);
	}
	/**
	 * SHA加密
	 * @param text
	 * @return
	 */
	public static String toSHA(String text){
//		DigestUtils.sha256Hex(text);  
//		DigestUtils.sha384Hex(text);  
//		DigestUtils.sha512Hex(text);  
		return DigestUtils.shaHex(text);
	}
	/**
	 * 位移加密char
	 * @param c
	 * @param move
	 * @return
	 */
	private static int encodeMove(char c,int move){
		int index = -1;
		int i = c;
		if (i>47&&i<58) {//0-9
			index = i-48;
//			System.out.println(c+"--"+m[i-48]);
		}else if (i>64&&i<91) {//A-Z
			index = i-55;
//			System.out.println(c+"--"+m[i-55]);
		}else if (i>96&&i<123) {//a-z
			index = i-61;
//			System.out.println(c+"--"+m[i-61]);
		}else {
			return -1;
		}
		if (index>-1) {//肯定执行
			int a = index+move;
			int b = a%62;
			return b;
		}
		return -1;
	}
	/**
	 * 位移解密char
	 * @param c
	 * @param move
	 * @return
	 */
	private static int decodeMove(char c,int move){
		int index = -1;
		int i = c;
		if (i>47&&i<58) {//0-9
			index = i-48;
//			System.out.println(c+"--"+m[i-48]);
		}else if (i>64&&i<91) {//A-Z
			index = i-55;
//			System.out.println(c+"--"+m[i-55]);
		}else if (i>96&&i<123) {//a-z
			index = i-61;
//			System.out.println(c+"--"+m[i-61]);
		}else {
			return -1;
		}
		if (index>-1) {//肯定执行
			int a = 62+index-move;
			int b = a%62;
			return b;
		}
		return -1;
	}
	/**
	 * 位移加密
	 * @param text
	 * @param count:位移距离
	 */
	public static String encode(String text,int count){
		char[]cs = text.toCharArray();
		StringBuffer sb = new StringBuffer();
		for (char c : cs) {
			int i = encodeMove(c, count);
			char a = m[i];
			sb.append(a);
		}
		return sb.toString();
	}
	/**
	 * 位移解密
	 * @param text
	 * @param count
	 * @return
	 */
	public static String decode(String text,int count){
		char[]cs = text.toCharArray();
		StringBuffer sb = new StringBuffer();
		for (char c : cs) {
			int i = decodeMove(c, count);
			char a = m[i];
			sb.append(a);
		}
		return sb.toString();
	}
	public static void main(String[] args) {
//		System.out.println(toUTF8("æ²¹", "iso-8859-1"));
//		System.out.println(decodeBase64(encodeBase64("中国")));
//		System.out.println(new String(DigestUtils.md5Hex("123456")));
		System.out.println((int)'0');//48-48=0
		System.out.println((int)'A');//65-10=55
		System.out.println((int)'Z');//
		System.out.println((int)'a');//97-36=61
		System.out.println((int)'z');//
		String t = "adfs345678190AZGHJHafsffz";
		char[]cs = t.toCharArray();
		StringBuffer sb = new StringBuffer();
		for (char c : cs) {
//			int i = c;
//			if (i>47&&i<58) {
//				System.out.println(c+"--"+m[i-48]);
//			}else if (i>64&&i<91) {
//				System.out.println(c+"--"+m[i-55]);
//			}else if (i>96&&i<123) {
//				System.out.println(c+"--"+m[i-61]);
//			}
//			System.out.println(c+"--"+m[moveEncode(c, 1)]+"--"+m[moveDecode(m[moveEncode(c, 1)], 1)]);
		}
		System.out.println(decode(encode("shiu76582hrhuhHFDHKJS", 2),2));
//		System.out.println(-2%10);
		
	}
}

 

分享到:
评论

相关推荐

    C# .net MD5加密解密工具及加密解密类

    C# .net MD5加密解密工具及加密解密类。使用方便,可直接下载加密解密代码在项目中使用。

    C# 常用加密解密类

    本文将详细介绍C#编程语言中常用的三种加密解密算法:DES、RSA和TripleDES。 首先,我们来了解一下基本的加密概念。加密是将明文数据转换为看似随机的密文,以防止未经授权的访问;解密则是将密文恢复为原始明文的...

    功能强大的php加密解密类

    自定义加密解密类通常是为了提供更方便的接口,或者实现特定的加密需求。此类可能包含各种加密方法,如使用预设密钥进行AES加密,或者实现自定义的加密算法。在给定的描述中,类的构造函数接收密钥,这意味着它可能...

    加密解密类(C#)

    用于加密解密的操作类。

    VB AES加密解密类

    ### VB AES加密解密类详解 #### 概述 标题为“VB AES加密解密类”的模块,旨在提供一种在Visual Basic(VB)环境中实现高级加密标准(AES)加密和解密功能的方法。AES是一种对称加密算法,广泛应用于数据保护、...

    Qt DES_ECB加密解密类

    **Qt DES_ECB 加密解密类** 在IT领域,数据安全是至关重要的,而加密技术就是保护数据安全的一种常用手段。DES(Data Encryption Standard)是一种古老的对称加密算法,虽然现在已被更强大的AES(Advanced ...

    PHP 加密解密处理类

    这里我们将讨论一些常见的加密库和函数,以及如何在实际项目中创建自定义加密解密类。 1. **基础加密函数**: - **md5()**:提供128位散列值,但不适用于加密,只适合做数据校验。 - **sha1()**:与md5类似,提供...

    php支持中英文的加密解密类

    标题中的"php支持中英文的加密解密类"很可能就是一个实现了这种功能的类文件,它能够对包含中文和英文的数据进行加解密操作。 在描述中提到的"不过最好把文档编码设置为utf-8",这是因为UTF-8是目前最广泛使用的多...

    功能强大的php加密解密类.zip

    这个名为“功能强大的php加密解密类.zip”的资源提供了一个PHP类库,专门用于加密和解密数据。这个类库可以帮助开发者确保数据在传输过程中的安全性,防止未授权访问和数据泄露。 在PHP中,加密解密通常涉及两种...

    C# DES加密解密类DESEncrypt.cs

    C#的字符串加密码类,DES加密解密类 DESEncrypt 简单实用,直接导入。

    Unity 工具类 之 简单的数据加密解密类 DataEncryptionAndDecryptionManager 实现

    Unity 工具类 之 简单的数据加密解密类 DataEncryptionAndDecryptionManager 实现 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security in...

    一些常见的C#加密解密类(MD5,RSA,DES,RC2...)

    本资源包含了一些常见的C#加密解密类,如MD5、RSA、DES和RC2。下面将详细阐述这些算法的工作原理及其在C#中的应用。 1. **MD5(Message-Digest Algorithm 5)** MD5是一种广泛使用的哈希函数,它将任意长度的输入...

    C#数据库连接字符串加密解密类

    .net下C#数据库连接字符串在配置文件中的加密解密类

    DES加密解密类

    这个"DES加密解密类"显然提供了一个方便的工具,可以进行数据的加密和解密操作,并且支持使用特定密码进行双加密,提高了安全性。 DES算法基于一个56位的密钥,通过一系列复杂的置换和轮函数操作,将明文数据转换成...

    ASP.NET实现 DES加密解密类

    【ASP.NET实现DES加密解密类】的知识点详解 在ASP.NET中,有时我们需要对敏感数据进行加密处理,以确保其在传输或存储时的安全性。DES(Data Encryption Standard)是一种常用的对称加密算法,适合对小量数据进行...

    C# 加密解密类

    C# 加密解密类,可以直接附加到程序中运行,已经很完善了

    c#版 aes加密解密类原文件

    c# 中的一个aes的加密解密类源文件,里面包含调用方法!

    微信退款回调加密信息-加密解密类

    微信退款回调加密信息-加密解密类,经测试有效,记得导入包

    C# DES加密/解密类成熟的加密解密类,适合项目开发,可以对于明文进行

    DES加密/解密类成熟的加密解密类,适合项目开发,可以对于明文进行加密

    一个PHP针对数字的加密解密类_.docx

    首先,这个加密解密类(XDeode)的核心思想是通过预定义的一个字符串($strbase),将其中的一部分作为标记长度字符串、数字替换字符串和补位字符串。在加密过程中,首先计算数字的长度,然后根据预设的规则进行加密...

Global site tag (gtag.js) - Google Analytics