`
阿尔萨斯
  • 浏览: 4276152 次
社区版块
存档分类
最新评论

Java加密算法 PBE

 
阅读更多
package com.stone.security;

import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;

/**
 * PBE算法 对称加密 password-based encryption
 * @author stone
 * @date 2014-03-10 23:41:35
 */
public class PBE {
	static final String KEY_ALGORITHM = "PBEWithMD5AndDES";
//	static byte[] salt = "xiaoyang".getBytes(); // 盐:Salt must be 8 bytes long
	static byte[] salt = "哈皮aa".getBytes(); // 盐:Salt must be 8 bytes long  哈皮,在utf8中是6个字节
	static int iterationCount = 888; //循环次数
	static Cipher cipher;
	
	public static void main(String[] args) throws Exception {
		byte[] encrypt = encrypt("中华人民admin*&(*S&6");
		System.out.println("PBE加密后:" + Arrays.toString(encrypt));
		
		System.out.println("PBE解密后:" + decrypt(encrypt));
	}
	
	/**
	 * 使用PBE 算法 加密
	 * @return	加密后的字符数组
	 * @throws Exception
	 */
	static byte[] encrypt(String str) throws Exception {
		cipher = Cipher.getInstance(KEY_ALGORITHM);
		
		//使用SecretKeyFactory 生成key
		SecretKeyFactory factory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
		PBEKeySpec keySpec = new PBEKeySpec("shizongyin".toCharArray());
		SecretKey key = factory.generateSecret(keySpec);
		System.out.println("key:" + Arrays.toString(key.getEncoded()));
		
		cipher.init(Cipher.ENCRYPT_MODE, key, new PBEParameterSpec(salt, iterationCount));//使用加密模式初始化 密钥
		return cipher.doFinal(str.getBytes()); //按单部分操作加密或解密数据,或者结束一个多部分操作。
	}
	
	/**
	 * 
	 * @param encrypt
	 * @return
	 * @throws Exception
	 */
	static String decrypt(byte[] encrypt) throws Exception {
		cipher = Cipher.getInstance(KEY_ALGORITHM);
		
		//使用SecretKeyFactory 生成key
		SecretKeyFactory factory = SecretKeyFactory.getInstance(KEY_ALGORITHM);
		PBEKeySpec keySpec = new PBEKeySpec("shizongyin".toCharArray());
		SecretKey key = factory.generateSecret(keySpec);
		System.out.println("key:" + Arrays.toString(key.getEncoded()));
		
		cipher.init(Cipher.DECRYPT_MODE, key, new PBEParameterSpec(salt, iterationCount));//使用加密模式初始化 密钥
		byte[] result = cipher.doFinal(encrypt); //按单部分操作加密或解密数据,或者结束一个多部分操作。
		
		return new String(result);
	}
	
}

分享到:
评论

相关推荐

    对称加密算法PBE(Java).rar

    对称加密算法是一种常见的数据加密技术,它使用相同的密钥进行加密和解密。在Java中,Password-Based Encryption(PBE)是对称加密的一种特殊形式,它基于密码来生成加密密钥,增强了安全性。PBE的主要优点是它允许...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    JAVA对称加密算法PBE定义与用法实例分析

    JAVA对称加密算法PBE定义与用法实例分析 JAVA对称加密算法PBE(Password Based Encryption,即基于口令加密)是一种常用的加密算法,它通过将口令转换为密钥,然后使用该密钥对数据进行加密。PBE算法优点在于可以...

    java与C#的PBE加密

    PBE(Password-Based Encryption)基于密码的加密是一种常见的加密方式,它结合了密钥派生函数(PBKDF)和对称加密算法,如DES(Data Encryption Standard),用于保护数据的安全。在Java和C#中,PBE提供了使用用户...

    java 文件加密解密 DES PBE RSA DH DSA ECC 等算法代码

    java 文件加密解密 DES PBE RSA DH DSA ECC 等算法代码,如有需要可直接下载

    java多种加密解密算法:SHA算法,HMAC算法,DES算法,PBE算法,AES算法,RSA算法,数字签名,D-H算法

    DES是一种古老的对称加密算法,使用56位密钥对数据进行64位块的加密。虽然现在已被认为不够安全,但它是现代加密算法的基础,如3DES。 4. PBE(Password-Based Encryption)算法: PBE是一种基于密码的加密方式,...

    Java加密技术介绍.docx

    Java加密技术(三)——PBE算法 Java加密技术(四)——非对称加密算法RSA Java加密技术(五)——非对称加密算法的由来DH Java加密技术(六)——数字签名算法DSA Java加密技术(七)——非对称加密算法最高级ECC ...

    [JAVA加解密]DES,AES,PBE,DH,RSA,ElGamal等算法实现及DataServlet实例

    本文将深入探讨几种常见的加密算法——DES、AES、PBE、DH、RSA以及ElGamal,并结合DataServlet实例来阐述如何在实际应用中使用这些算法。 首先,DES(Data Encryption Standard)是一种对称加密算法,使用56位的...

    Java十大加密算法(对称与非对称)

    加密算法包含:AES、DES、DH、ECDSA、MD5、PBE、RC4、RSA、ThreeDES等

    Java Jct 加密解密工具包源码.rar

    WDSsoft免费源代码,java加密解密编程常用工具包 JCT 1.0,作者吴东升 常蕴秋,BlowfishTool.java封装同Blowfish对称加密算法有关的方法,包括了使用创建Blowfish密码,使用Blowfish加密、解密, 使用PBE(基于口令的...

    常见的加密算法实现源码分享-Java语言编写

    常见的加密算法实现--Java语言编写,花费一个多月认真整理出来的可直接运行的源码文件。下载RAR文件后,对压缩包进行解压后,里面有详细的例子,导入IDEA或者ECLIPSE后,运行指定的Java文件,即可以直接使用。压缩包...

    JAVA加密技术.docx

    本文将探讨几种常见的加密算法,包括单向加密和对称及非对称加密算法。首先,我们来看基础的单向加密算法,如BASE64、MD5、SHA和HMAC。 **BASE64** 是一种编码方式,而非真正的加密算法。它将任意8位字节序列转化为...

    java加密技术

    java加密技术 与单向加密算法MD5&SHA;&MAC; 对称加密算法DES&AES; PBE 算法

    java加密技术大全

    Java加密技术是保护数据安全的重要工具,广泛应用于网络通信、数据存储、数字签名等领域。本资源包涵盖了Java中常见的加密算法和技术,包括基础的哈希算法、对称加密、非对称加密以及证书签名和SSL/TLS协议。下面将...

    JAVA加密和解密的艺术(第二版).zip

    在实际应用部分,书中的源代码部分(Java加密与解密的艺术--源代码.rar)提供了详细的示例,覆盖了SSL/TLS协议的实现,网络通信的安全,以及PBE(Password-Based Encryption)和PKCS#7等标准的使用。这些代码实例...

    java 加密

    Java加密技术是软件开发中的重要组成部分,特别是在网络安全和数据保护方面。这个压缩包包含了一些用于加密操作的Java源代码文件,如Base64编码、证书处理、RSA算法、DH算法、ECC算法、DSA算法、DES算法以及PBE...

    Java加密算法研究

     ● HMAC(Hash Message Authentication Code,散列消息鉴别码)复杂的对称加密(DES、PBE)、非对称加密算法:  ● DES(Data Encryption Standard,数据加密算法)  ● PBE(Password-based encryption,基于...

    Java加密与解密的艺术

    文件校验2096.8 小结211第7章初等数据加密—对称加密算法2137.1 对称加密算法简述2137.2 数据加密标准—DES 2147.3 三重DES—DESede 2227.4 高级数据加密标准—AES 2277.5 国际数据加密标准—IDEA 2327.6 基于口令...

    ava加密解密 DES PBE RSA DH DSA ECC 等算法

    首先,我们来看基本的单向加密算法。这些算法主要用于生成不可逆的散列值,以验证数据的完整性和一致性。 1. **BASE64**:它是一种编码方式,而不是加密算法,用于将8位字节序列转换为ASCII字符集中的可读形式。在...

    Java加密技术(一)

    总之,Java加密技术提供了丰富的工具和算法,可以帮助开发者构建安全的应用程序。然而,随着技术的发展,加密算法的安全性也需要不断更新,以抵御新的攻击手段。在设计系统时,应考虑最新的安全标准和最佳实践,确保...

Global site tag (gtag.js) - Google Analytics