`
sailinglxg
  • 浏览: 92269 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JDK一些加密技术应用

    博客分类:
  • java
阅读更多
/**
 * 
 */
package encrypt;

import java.math.BigInteger;
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;

/**
 * @descript EncryptDemo.java
 * @author sinclair
 * @date Jun 9, 2010
 */
public class EncryptDemo {
    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";

    /**
     * @param args
     * @throws Exception
     */
    public static void main( String[] args ) throws Exception {
	String src = "admin";
	System.out.println( "原数据:\n" + src );
	System.out.println( "--------------------MD5加密------------------" );
	BigInteger md5 = new BigInteger( encryptMD5( src.getBytes() ) );
	String md5_target = md5.toString( 16 );
	System.out.println( "MD5加密:\n" + md5_target );
	System.out.println( "--------------------SHA加密------------------" );
	BigInteger sha5 = new BigInteger( encryptSHA( src.getBytes() ) );
	String sha5_target = sha5.toString( 32 );
	System.out.println( "SHA加密:\n" + sha5_target );
	System.out.println( "--------------------HMAC加密-----------------" );
	String key = initMacKey();
	System.out.println( "HMAC密钥:\n" + key );
	BigInteger hmac = new BigInteger( encryptHMAC( src.getBytes(), key ) );
	String hmac_target = hmac.toString( 16 );
	System.out.println( "HMAC加密:\n" + hmac_target );
	System.out.println( "--------------------BASE64加密和解密----------" );
	byte[] inputData = src.getBytes();
	String code = encryptBASE64( inputData );
	System.out.println( "BASE64加密:\n" + code );
	byte[] output = decryptBASE64( code );
	String outputStr = new String( output );
	System.out.println( "BASE64解密:\n" + outputStr );
    }

    /**
     * MD5加密
     * 
     * @param input
     * @return
     * @throws Exception
     */
    public static byte[] encryptMD5( byte[] input ) throws Exception {
	MessageDigest md5 = MessageDigest.getInstance( KEY_MD5 );
	// md5.update( input );
	return md5.digest( input );
    }

    /**
     * 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( data );

    }

    /**
     * BASE64加密
     * 
     * @param key
     * @return
     * @throws Exception
     */
    public static String encryptBASE64( byte[] key ) throws Exception {
	return ( new BASE64Encoder() ).encodeBuffer( key );
    }

    /**
     * BASE64解密
     * 
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptBASE64( String key ) throws Exception {
	return ( new BASE64Decoder() ).decodeBuffer( key );
    }

    /**
     * 初始化HMAC密钥
     * 
     * @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 );
    }

}

分享到:
评论

相关推荐

    jdk8解除aes加密限制.zip

    在Java中,加密相关的限制主要源于美国出口法规,这些法规限制了某些高强度加密算法的使用,以防止技术非法出口。因此,Java Cryptography Extension (JCE) 有预设的密钥长度上限,如AES的密钥长度最大为128位。当...

    RSA前台公钥加密后台私钥解密 jdk 1.5-1.8版本

    RSA算法是一种非对称加密技术,它基于两个不同的密钥:公钥和私钥。这种技术的核心在于,公钥可以公开给任何人用于加密数据,而私钥必须保密,用于解密由公钥加密的数据。在"RSA前台公钥加密后台私钥解密"的场景中,...

    JDK8 JCE 支持256位加密

    - 安全通信:HTTPS、SSL/TLS协议利用JCE提供的加密技术保证网络通信的安全。 - 数字签名和证书:在电子签名、代码签名等场景中,256位加密提供了更高的安全保证。 - 密码学应用:如PGP、GPG等加密软件,以及基于Java...

    jdk1.7 去除加密管制限制

    总结起来,"jdk1.7 去除加密管制限制"涉及到的是调整Java环境中的加密策略,通过替换`local_policy.jar`和`US_export_policy.jar`文件,可以让Java应用程序使用更强大的加密技术。然而,这需要谨慎操作,并且应根据...

    Java中常用的加密方法(JDK)

    对称加密是一种使用同一密钥进行加密和解密的加密技术。它的优点在于加解密速度快,适合处理大量数据。Java中实现对称加密的关键类包括`KeyGenerator`、`SecretKey`和`Cipher`。 `KeyGenerator`类用于生成对称密钥...

    jdk7-8兼容包(微信企业号接入JDK6和JDK7及JDK8加解密失败处理).zip

    兼容包通常会使用反射、动态代理等技术,以绕过JDK版本间的差异。 在使用这个兼容包时,开发者需要按照提供的使用教程进行操作。教程可能涵盖了如何引入兼容包到项目中,如何配置项目以使用这些兼容的加密工具,...

    jdk1.6版本

    - **更强的加密**:JDK 1.6加强了加密算法,包括对AES、RSA和哈希函数的升级,提高了安全性。 - **权限控制**:添加了更多细粒度的安全策略,使开发者能够更好地控制程序的访问权限。 4. **开发工具**: - **...

    bcprov-jdk15on-1.47.jar Java 加密 解密 jar包

    6. **区块链应用**:在开发基于区块链技术的应用时,Bouncy Castle用于处理加密和签名操作。 总的来说,bcprov-jdk15on-1.47.jar是Java开发者在处理安全问题时不可或缺的工具,尤其对于那些需要高级加密功能且关注...

    bcprov-jdk16-1.46.jar

    加密技术是保障数据安全的重要手段,而Bouncy Castle库则是Java平台上的一个强大加密工具,bcprov-jdk16-1.46.jar正是该库的一个版本。本文将深入探讨Bouncy Castle库及其在这个特定版本中的应用。 Bouncy Castle,...

    bcprov-jdk16-146-RSA.jar RAS加解密公私钥

    这是一种非对称加密技术,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。RSA的数学基础在于大整数因子分解的困难性,使得在当前计算能力下,加密的数据几乎无法被破解。 “公私钥”是RSA的核心概念。...

    JDK11.0.23版本

    6. **强加密**:JDK 11提供了更强的加密算法,增强了系统的安全性能。 7. **改进的垃圾收集器**:JDK 11中包括了G1垃圾收集器的改进,如并行Full GC,以及ZGC(Z Garbage Collector),这是一种低延迟的垃圾收集器...

    bcprov-jdk15on jar包版本集合

    加密技术作为保障数据安全的基石,扮演着不可或缺的角色。bcprov-jdk15on是一款针对Java环境的加密库,它提供了广泛且强大的加密功能,远超JDK自带的标准加密库,对于需要强大加密支持的开发者来说,是不可或缺的...

    jdk1.6jar包

    总结,JDK 1.6是Java发展历程中的一个重要里程碑,它的各种特性极大地推动了Java技术的发展,而JDK 1.6.0_39的更新则进一步确保了开发者能够在安全、稳定的环境中进行开发。无论是在企业级应用开发,还是在个人项目...

    jdk1.6.0_10

    在安全性方面,JDK1.6.0_10修复了一些已知的安全漏洞,增强了加密算法的支持,比如加强了SSL/TLS协议,提升了网络通信的安全性。同时,对Java插件和Java Web Start进行了改进,提升了浏览器中运行Java应用程序的安全...

    jce_policy-jdk6-jdk7-jdk8.zip

    这是因为历史上存在一些国家对加密技术的出口管制,因此Oracle JDK默认提供了不同的策略来遵守这些法规。 - "local_policy.jar":这个文件包含了在美国境内使用的加密策略,没有强度限制,允许开发者使用任何强度的...

    bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar压缩文件

    在Java开发中,加密技术是至关重要的,它保障了数据的安全传输和存储。bcprov-jdk15on和bcprov-ext-jdk15on是Bouncy Castle项目提供的两个关键库,它们为Java提供了强大的加密支持。本文将详细解析这两个库的差异、...

    bcprov-jdk15on-1.64运行包及源码.zip

    标签"加密 bcprov-jdk15on"表明这个压缩包主要与加密技术相关,特别是Bouncy Castle的这个特定版本。在Java应用中,开发者可能会用到Bouncy Castle来进行数据加密、解密,生成和验证数字签名,以及处理X.509证书等...

    国密依赖包bcprov-jdk16-1.46.jar

    在Java开发中,加密技术是保障信息安全的重要手段。国密(国家商用密码算法)是中国自主研发的一系列密码算法,包括SM2、SM3和SM4等,它们在金融、政务等领域有着广泛的应用。bcprov-jdk16-1.46.jar是一款支持国密...

    清华镜像-JDK11.zip

    安全性方面,JDK11弃用了Java加密API(JSSE)的一些过时组件,转而推荐使用新的API,这有助于提高系统的安全性。同时,JDK11对TLS协议进行了升级,提升了加密强度,为用户的数据安全保驾护航。 在清华镜像中获取JDK...

    JDK1.6.0_13免安装版

    JDK 1.6.0_13是Oracle公司发布的早期版本,尽管它已经不再支持,但仍然有一些开发者或项目可能因为兼容性问题需要使用这个特定版本。 **JDK 1.6的特点** 1. **增强的性能**:JDK 1.6在1.5的基础上进行了许多性能...

Global site tag (gtag.js) - Google Analytics