java 基本加密实现

发布时间:2011-10-19 16:20:02   来源:文档文库   
字号:

package com.code;

import java.security.MessageDigest;

import javax.crypto.KeyGenerator;

import javax.crypto.Mac;

import javax.crypto.SecretKey;

import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

/**

*

*

* @author

* @version 1.0

* @since 1.0

*/

public abstract class Coder {

public static final String KEY_SHA = "SHA";

public static final String KEY_MD5 = "MD5";

/**

* MAC

*

*

 

* HmacMD5

* HmacSHA1

* HmacSHA256

* HmacSHA384

* HmacSHA512

*

*/

public static final String KEY_MAC = "HmacMD5";

/**

* BASE64

*

* @param key

* @return

* @throws Exception

*/

public static byte[] decryptBASE64(String key) throws Exception {

return (new BASE64Decoder()).decodeBuffer(key);

}

/**

* BASE64

*

* @param key

* @return

* @throws Exception

*/

public static String encryptBASE64(byte[] key) throws Exception {

return (new BASE64Encoder()).encodeBuffer(key);

}

/**

* MD5

*

* @param data

* @return

* @throws Exception

*/

public static byte[] encryptMD5(byte[] data) throws Exception {

MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);

md5.update(data);

return md5.digest();

}

/**

* SHA

*

* @param data

* @return

* @throws Exception

*/

public static byte[] encryptSHA(byte[] data) throws Exception {

MessageDigest sha = MessageDigest.getInstance(KEY_SHA);

sha.update(data);

return sha.digest();

}

/**

*

*

* @return

* @throws Exception

*/

public static String initMacKey() throws Exception {

KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);

SecretKey secretKey = keyGenerator.generateKey();

return encryptBASE64(secretKey.getEncoded());

}

/**

* HMAC

*

* @param data

* @param key

* @return

* @throws Exception

*/

public static byte[] encryptHMAC(byte[] data, String key) throws Exception {

SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);

Mac mac = Mac.getInstance(secretKey.getAlgorithm());

mac.init(secretKey);

return mac.doFinal(data);

}

}

package com.code;

import java.math.BigInteger;

/**

*

* @author z��

* @version 1.0

* @since 1.0

*/

public class CoderTest {

public void test() throws Exception {

String inputStr = "中文";

System.err.println("输入:\n" + inputStr);

byte[] inputData = inputStr.getBytes();

String code = Coder.encryptBASE64(inputData);

System.err.println("BASE64加密:\n" + code);

byte[] output = Coder.decryptBASE64(code);

String outputStr = new String(output);

System.err.println("BASE64解密:\n" + outputStr);

// assertEquals(inputStr, outputStr);

// assertEquals(Coder.encryptMD5(inputData), Coder

// .encryptMD5(inputData));

// assertEquals(Coder.encryptSHA(inputData), Coder

// .encryptSHA(inputData));

String key = Coder.initMacKey();

System.err.println("Mac��Կ:\n" + key);

// assertEquals(Coder.encryptHMAC(inputData, key), Coder.encryptHMAC(

// inputData, key));

BigInteger md5 = new BigInteger(Coder.encryptMD5(inputData));

System.err.println("MD5:\n" + md5.toString(16));

BigInteger sha = new BigInteger(Coder.encryptSHA(inputData));

System.err.println("SHA:\n" + sha.toString(32));

BigInteger mac = new BigInteger(Coder.encryptHMAC(inputData, inputStr));

System.err.println("HMAC:\n" + mac.toString(16));

}

public static void main(String[]a){

CoderTest ct=new CoderTest();

try {

ct.test();

} catch (Exception e) {

e.printStackTrace();

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/284885f4ba0d4a7302763aae.html

《java 基本加密实现.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式