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

本文实例讲述了JAVA对称加密算法PBE定义与用法。分享给大家供大家参考,具体如下:

一 AES、DES和3DES在使用上比较一致

二 PBE算法优点

三 PBE介绍

1、PBE:Password Based Encryption 基于口令加密。通过加Salt来增强安全性。
2、对已有算法的包装
3、JDK和BC的实现
4、通过加Salt来增强安全性

四 常见算法

五代码实现

package com.imooc.security.pbe;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import org.apache.commons.codec.binary.Base64;
public class ImoocPBE {
    private static String src = "cakin24 security pbe";
    public static void main(String[] args) {
        jdkPBE();
    }
    public static void jdkPBE() {
        try {
            //初始化盐
            SecureRandom random = new SecureRandom();
            byte[] salt = random.generateSeed(8);
            //口令与密钥
            String password = "cakin24";
            PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
            SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES");
            Key key = factory.generateSecret(pbeKeySpec);
            //加密
            PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(salt, 100);
            Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES");
            cipher.init(Cipher.ENCRYPT_MODE, key, pbeParameterSpec);
            byte[] result = cipher.doFinal(src.getBytes());
            System.out.println("jdk pbe encrypt : " + Base64.encodeBase64String(result));
            //解密
            cipher.init(Cipher.DECRYPT_MODE, key, pbeParameterSpec);
            result = cipher.doFinal(result);
            System.out.println("jdk pbe decrypt : " + new String(result));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

六 实现效果

jdk pbe encrypt : UKXIqWmtrNBpJ1ayTgGWmpswSLPLel5X
jdk pbe decrypt : cakin24 security pbe

七 应用场景

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于java相关内容感兴趣的读者可查看本站专题:《Java数学运算技巧总结》、《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java实现的对称加密算法3DES定义与用法示例

    本文实例讲述了Java实现的对称加密算法3DES定义与用法.分享给大家供大家参考,具体如下: 一 为什么出现3DES 1.返回柯克霍夫原则 2.存在安全问题 二 3DES(Triple DES或DESede)好处 1.密钥长度增强 2.迭代次数提高 三 3DES相关参数 四 3DES代码实现 package com.imooc.security.des; import java.security.Key; import java.security.SecureRandom; import jav

  • 利用JAVA实现DES加密算法

    DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法.DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解.虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现. JAVA实现加密代码有详细解释,不多废话.注意:DES加密和解密过程中,密钥长度都必须是8的倍数 复制代码 代码如下: public byte[] de

  • JAVA加密算法- 非对称加密算法(DH,RSA)的详细介绍

    非对称密码概念 1.与对称加密算法的主要差别在于,加密和解密的密钥不相同,一个公开(公钥),一个保密(私钥).主要解决了对称加密算法密钥分配管理的问题,提高了算法安全性. 2.非对称加密算法的加密.解密的效率比较低.在算法设计上,非对称加密算法对待加密的数据长度有着苛刻的要求.例如RSA算法要求待加密的数据不得大于53个字节. 3.非对称加密算法主要用于 交换对称加密算法的密钥,而非数据交换 4.java6提供实现了DH和RSA两种算法.Bouncy Castle提供了E1Gamal算法支持.除

  • java基于Des对称加密算法实现的加密与解密功能详解

    本文实例讲述了java基于Des对称加密算法实现的加密与解密功能.分享给大家供大家参考,具体如下: Des 加密相关类介绍: SecureRandom  这个类是继承自java.util.Random 这个类 SecureRandom 这个类的构造器有三种,下面例举两种: SecureRandom()构造一个实现默认随机数算法的安全随机数生成器 (RNG). SecureRandom(byte[] seed)构造一个实现默认随机数算法的安全随机数生成器 (RNG). DESKeySpec 这个类

  • java 非对称加密算法RSA实现详解

    现在就为大家介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1.公钥加密,私钥解密:2.私钥加密,公钥解密.下面就为大家分析一下实现代码,相对于DH算法,RSA显得有些简单. 初始化密钥: KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.g

  • java实现的DES加密算法详解

    本文实例讲述了java实现的DES加密算法.分享给大家供大家参考,具体如下: 一.DES加密算法介绍 1.要求密钥必须是8个字节,即64bit长度 2.因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3.加密.解密都需要通过字节数组作为数据和密钥进行处理 二.对称加密 DES加密算法属于对称加密. 即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位.算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据. 加密与解

  • Java对称加密算法DES实例详解

    本文实例讲述了Java对称加密算法DES.分享给大家供大家参考,具体如下: 一 DES算法概述 1.介绍 DES:Data Encryption Standard 数据加密标准. 2.DES算法参数 二 DES算法Java实现 package com.imooc.security.des; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; import javax.crypto

  • 使用java自带des加密算法实现文件加密和字符串加密

    复制代码 代码如下: import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.security.SecureR

  • java 对称加密算法实现详解

    前言 对于信息的加密方式多种多样,之前为大家介绍了一种自己设计的加密方式,有兴趣的朋友可以欣赏一下,欢迎给予指点.今天为大家介绍一下对称加密方式,所谓对称加密指的是加密和解密方式呈对称格式,即解密是加密的逆过程,下面我们就看一下:DES.3DES.AES.PBE这四种方式,他们的加密强度依次递增.好吧闲话少说,上代码: 首先我们先看一下DES: package cn.edu.hpu.des; import java.security.Key; import javax.crypto.Cipher

  • java基于AES对称加密算法实现的加密与解密功能示例

    本文实例讲述了java基于AES对称加密算法实现的加密与解密功能.分享给大家供大家参考,具体如下: package com.soufun.com; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import

  • Java实现的对称加密算法AES定义与用法详解

    本文实例讲述了Java实现的对称加密算法AES定义与用法.分享给大家供大家参考,具体如下: 一 简介 1.AES是目前使用最多的对称加密算法. 2.AES的优势之一是至今尚未被破解. 3.AES通常用于移动通信系统加密以及基于SSH协议(SSH Client.SecrueCRT)的软件. 二 特点 1.高级的 2.DES替代者 三 AES的参数说明 四 代码实现 package com.imooc.security.aes; import java.security.Key; import ja

  • java 非对称加密算法DH实现详解

    非对称加密算法是相对于对称加密算法来说的,对于对称加密算法请查阅之前的总结,今天为大家介绍一下DH算法,DH是一种密钥交换算法,接收方根据发送方加密时的密钥,生成接收方解密密钥.下面就一起来学习一下吧: 初始化发送方密钥: KeyPairGenerator sendKeyPairGenerator = KeyPairGenerator.getInstance("DH"); sendKeyPairGenerator.initialize(512); KeyPair sendKeyPair

随机推荐