- 浏览: 2159126 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (401)
- Agile (16)
- Apache Commons (3)
- Architecture (8)
- DB.MongoDB (5)
- DB.Mysql (3)
- DB.Oracle (34)
- DirectoryService (1)
- DotNet (1)
- English (3)
- Groovy (0)
- Html (28)
- Java (67)
- Java.Aixs (7)
- Java.Cache (2)
- Java.jPBM (1)
- Java.Resin (6)
- Java.Spring (4)
- Java.Struts2 (5)
- Java.Tomcat (16)
- Javascript (45)
- Javascript.Google Map (2)
- Javascript.Jquery (8)
- Life (15)
- Maven&Ant (4)
- Network (5)
- OS.Linux (45)
- OS.Windows (10)
- OS.Windows.Office (1)
- PlayFramework (15)
- Python (28)
- Reading notes (11)
- Security (13)
- Server.Apache (3)
- Server.Nginx (7)
- Test (6)
- Tool (15)
- Work.Solution (15)
- Other (20)
- SSO&CAS&Identity (13)
最新评论
-
hutuxiansheng123:
防火墙、Iptables、netfilter/iptables、NAT 概述 -
dacoolbaby:
非常棒的正则表达式,非常适用。万分感谢。
用python分析nginx的access日志 -
loot00:
您好! 我也遇到了相同的错误信息。我是用f_link_lob ...
LOB variable no longer valid after subsequent fetch -
feihangchen:
@OnApplicationStop public clas ...
Play framework 1.2.3 Jobs定时任务、异步任务、引导任务、触发任务、关闭任务 -
洞渊龙王:
谢谢了
www.w3.org被qiang导致logback报错:Connect reset
对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常用的对称加密有:DES(Data Encryption Standard)、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
PBE——Password-based encryption(基于密码加密)其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的对称加密方式。
PBE算法没有密钥(秘密[对称]密钥)的概念,把密码+盐+消息摘要迭代数当做密钥了。因为密钥长短影响算法安全性,还不方便记忆,这里我们直接换成我们自己常用的密码就大大不同了,便于我们的记忆。但是单纯的密码很容易被字典法给穷举出来,所以我们这里给密码加了点“盐”,这个盐和密码组合,想破解就难了。同时我们将盐和口令合并后用消息摘要算法进行迭代很多次来构建密钥初始化向量的基本材料,使破译更加难了。
PBE算法没构建新的加密算法,就是用了我们常用的对称加密算法,例如AES,DES等算法。它是将密钥的概念转成 “口令+盐” 的方式,将不便于记忆的密钥转成便于记忆的口令。
这个是不是和我们到银行开的U盾有些像呢?
就拿民生银行的U盾来说,我们插上U盾,还需要我们去输入口令。然后才能到网上银行去登陆操作,付款的时候还是需要我们去输入口令。
1、U盾的盐从何来?:应该是那个闪盘的序列编号经过一定的处理得出的一个值,因为我们想要U盾生效,在民生的大厅中需要找一个机器激活的。那个激活的动作应该是将我们U盾这个闪盘中的数据写入到我们个人的账户中,相当于做了一次盐的公布
2、口令何来?:就是我们设定的登陆密码呀。这个在窗口办理的时候需要我们设定U盾的密码。并且我们在激活的时候可以改我们的密码
有了上边两个,我们再进行操作,就可以进行我们的身份发送数据的安全性了。网银的数据交换真的安全了...
java6和bouncycastle支持的算法列表
算法 密钥长度 密钥长度默认值 工作模式 填充方式 备注
PBEWithMD5AndDES 56 56 CBC PKCS5Padding java6实现
PBEWithMD5AndTripeDES 112、168 168 CBC PKCS6Padding java7实现
PBEWithSHA1AndDESede 112、168 168 CBC PKCS7Padding java8实现
PBEWithSHA1AndRC2_40 40至1024 128 CBC PKCS8Padding java9实现
PBEWithMD5AndDES 64 64 CBC PKCS5Padding/PKCS7Padding/ISO10126Padding/ZeroBytePadding BouncyCastle实现
PBEWithMD5AndRC2 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10127Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHA1AndDES 64 64 CBC PKCS5Padding/PKCS7Padding/ISO10128Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHA1AndRC2 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10129Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAndIDEA-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10130Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd2-KeyTripleDES-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10131Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd3-KeyTripleDES-CBC 192 192 CBC PKCS5Padding/PKCS7Padding/ISO10132Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd128BitRC2-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10133Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd40BitRC2-CBC 40 40 CBC PKCS5Padding/PKCS7Padding/ISO10134Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd128BitRC4 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10135Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd40BitRC4 40 40 CBC PKCS5Padding/PKCS7Padding/ISO10136Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAndTwofish-CBC 256 256 CBC PKCS5Padding/PKCS7Padding/ISO10137Padding/ZeroBytePadding BouncyCastle实现
PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签 名、数字信封的格式等方面的一系列相关协议。
PBE加密例子:
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
PBE——Password-based encryption(基于密码加密)其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的对称加密方式。
PBE算法没有密钥(秘密[对称]密钥)的概念,把密码+盐+消息摘要迭代数当做密钥了。因为密钥长短影响算法安全性,还不方便记忆,这里我们直接换成我们自己常用的密码就大大不同了,便于我们的记忆。但是单纯的密码很容易被字典法给穷举出来,所以我们这里给密码加了点“盐”,这个盐和密码组合,想破解就难了。同时我们将盐和口令合并后用消息摘要算法进行迭代很多次来构建密钥初始化向量的基本材料,使破译更加难了。
PBE算法没构建新的加密算法,就是用了我们常用的对称加密算法,例如AES,DES等算法。它是将密钥的概念转成 “口令+盐” 的方式,将不便于记忆的密钥转成便于记忆的口令。
这个是不是和我们到银行开的U盾有些像呢?
就拿民生银行的U盾来说,我们插上U盾,还需要我们去输入口令。然后才能到网上银行去登陆操作,付款的时候还是需要我们去输入口令。
1、U盾的盐从何来?:应该是那个闪盘的序列编号经过一定的处理得出的一个值,因为我们想要U盾生效,在民生的大厅中需要找一个机器激活的。那个激活的动作应该是将我们U盾这个闪盘中的数据写入到我们个人的账户中,相当于做了一次盐的公布
2、口令何来?:就是我们设定的登陆密码呀。这个在窗口办理的时候需要我们设定U盾的密码。并且我们在激活的时候可以改我们的密码
有了上边两个,我们再进行操作,就可以进行我们的身份发送数据的安全性了。网银的数据交换真的安全了...
java6和bouncycastle支持的算法列表
算法 密钥长度 密钥长度默认值 工作模式 填充方式 备注
PBEWithMD5AndDES 56 56 CBC PKCS5Padding java6实现
PBEWithMD5AndTripeDES 112、168 168 CBC PKCS6Padding java7实现
PBEWithSHA1AndDESede 112、168 168 CBC PKCS7Padding java8实现
PBEWithSHA1AndRC2_40 40至1024 128 CBC PKCS8Padding java9实现
PBEWithMD5AndDES 64 64 CBC PKCS5Padding/PKCS7Padding/ISO10126Padding/ZeroBytePadding BouncyCastle实现
PBEWithMD5AndRC2 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10127Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHA1AndDES 64 64 CBC PKCS5Padding/PKCS7Padding/ISO10128Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHA1AndRC2 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10129Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAndIDEA-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10130Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd2-KeyTripleDES-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10131Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd3-KeyTripleDES-CBC 192 192 CBC PKCS5Padding/PKCS7Padding/ISO10132Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd128BitRC2-CBC 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10133Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd40BitRC2-CBC 40 40 CBC PKCS5Padding/PKCS7Padding/ISO10134Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd128BitRC4 128 128 CBC PKCS5Padding/PKCS7Padding/ISO10135Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAnd40BitRC4 40 40 CBC PKCS5Padding/PKCS7Padding/ISO10136Padding/ZeroBytePadding BouncyCastle实现
PBEWithSHAAndTwofish-CBC 256 256 CBC PKCS5Padding/PKCS7Padding/ISO10137Padding/ZeroBytePadding BouncyCastle实现
PKCS:The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签 名、数字信封的格式等方面的一系列相关协议。
PBE加密例子:
package com.ca.test; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import org.apache.commons.codec.binary.Base64; /** * 对称加密算法:基于口令加密-PBE算法实现 * 使用java6提供的PBEWITHMD5andDES算法进行展示 * @author kongqz * */ public class PBECoder { /** * JAVA6支持以下任意一种算法 * PBEWITHMD5ANDDES * PBEWITHMD5ANDTRIPLEDES * PBEWITHSHAANDDESEDE * PBEWITHSHA1ANDRC2_40 * PBKDF2WITHHMACSHA1 * */ public static final String ALGORITHM="PBEWITHMD5andDES"; /** * 迭代次数 * */ public static final int ITERATION_COUNT=100; /** * 盐初始化 * 盐长度必须为8字节 * @return byte[] 盐 * */ public static byte[] initSalt() throws Exception{ //实例化安全随机数 SecureRandom random=new SecureRandom(); //产出盐 return random.generateSeed(8); } /** * 转换密钥 * @param password 密码 * @return Key 密钥 * */ private static Key toKey(String password) throws Exception{ //密钥彩礼转换 PBEKeySpec keySpec=new PBEKeySpec(password.toCharArray()); //实例化 SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(ALGORITHM); //生成密钥 SecretKey secretKey=keyFactory.generateSecret(keySpec); return secretKey; } /** * 加密 * @param data 待加密数据 * @param password 密码 * @param salt 盐 * @return byte[] 加密数据 * * */ public static byte[] encrypt(byte[] data,String password,byte[] salt) throws Exception{ //转换密钥 Key key=toKey(password); //实例化PBE参数材料 PBEParameterSpec paramSpec=new PBEParameterSpec(salt,ITERATION_COUNT); //实例化 Cipher cipher=Cipher.getInstance(ALGORITHM); //初始化 cipher.init(Cipher.ENCRYPT_MODE, key,paramSpec); //执行操作 return cipher.doFinal(data); } /** * 解密 * @param data 待解密数据 * @param password 密码 * @param salt 盐 * @return byte[] 解密数据 * * */ public static byte[] decrypt(byte[] data,String password,byte[] salt) throws Exception{ //转换密钥 Key key=toKey(password); //实例化PBE参数材料 PBEParameterSpec paramSpec=new PBEParameterSpec(salt,ITERATION_COUNT); //实例化 Cipher cipher=Cipher.getInstance(ALGORITHM); //初始化 cipher.init(Cipher.DECRYPT_MODE, key,paramSpec); //执行操作 return cipher.doFinal(data); } /** * 使用PBE算法对数据进行加解密 * @throws Exception * */ public static void main(String[] args) throws Exception { //待加密数据 String str="PBE"; //设定的口令密码 String password="azsxdc"; System.out.println("原文:/t"+str); System.out.println("密码:/t"+password); //初始化盐 byte[] salt=PBECoder.initSalt(); System.out.println("盐:/t"+Base64.encodeBase64String(salt)); //加密数据 byte[] data=PBECoder.encrypt(str.getBytes(), password, salt); System.out.println("加密后:/t"+Base64.encodeBase64String(data)); //解密数据 data=PBECoder.decrypt(data, password, salt); System.out.println("解密后:"+new String(data)); } } 控制台结果输出: 原文: PBE 密码: azsxdc 盐: VeEQqRzOw2Y= 加密后: 7bQTon5WD04= 解密后:PBE
发表评论
-
xml 字符串和xml Document相互转换、xml Document内容输出到http response
2012-11-05 10:07 5568import java.io.ByteArrayOutpu ... -
isAssignableFrom & isInstance
2012-11-02 14:34 1228java.lang.Object extended by ja ... -
Struts 1.1 ExceptionHandler(转)
2012-11-02 10:20 1433转自:SSH项目中利用Exce ... -
openssl 非对称加密DSA,RSA区别与使用介绍(转)
2012-10-26 16:42 14197在日常系统管理工作中,需要作一些加解密的工作,通过openss ... -
X.509、数字签名、CA(Certificate Authority)、自签名证书、PKI
2012-10-18 14:22 6327X.509是由国际电联电信委员会(ITU-T)为单点登录(SS ... -
keytool、keystore、jarsigner、生成自签名证书
2012-10-18 10:27 8055Keytool是Java的密钥和数字证书管理工具,位于JDK_ ... -
(转)为什么应该放弃或减少使用MD5
2012-10-11 10:48 2117MD5是一种常用的单向哈 ... -
Java 类初始化顺序
2012-08-21 14:07 1107class Parent { // 静态变量 pu ... -
java嵌套类、静态嵌套类、内部类
2012-08-21 10:29 2112官网文档:Nested Classes 什么是嵌套类及内部类 ... -
java静态类、静态方法、静态变量、实例变量、线程本地变量、静态线程本地变量
2012-08-21 10:24 1887静态类: 只有嵌套类才 ... -
iptables 命令格式、语法
2012-07-20 15:01 2878转自:第三章:iptables ... -
防火墙、Iptables、netfilter/iptables、NAT 概述
2012-07-20 14:12 9717转自:防火墙的概述 一、防火墙的简介 防火墙是指设置在不同 ... -
ProcessBuilder 和 Runtime
2012-07-17 09:26 20944ProcessBuilder.start() 和 Runtim ... -
(转)xml schema xsd 入门
2012-06-28 16:05 2472理解XML Schema: XML Schema 初步 (I) ... -
XmlRootElement JAXB注解
2012-06-28 15:23 39094@Retention(value=RUNTIME) @T ... -
jaxb xml数据绑定
2012-06-28 14:22 1323XML Schema编辑工具:XML Spy 常见的XML绑 ... -
(转)jpa 注解
2012-06-25 16:00 1335转自:jpa 注解 1.设置Po ... -
(转)JPA(Java Persistence API)简介
2012-06-25 14:20 1548转自JPA基础(一):全 ... -
Play 内置模板标签(1.2.3版本)
2012-06-18 14:03 5011Play framework 1.2.3 Built-in t ... -
play plugin插件 实现类似Servlet中的拦截器效果
2012-06-15 15:05 3650play plugin和module的区别见:play Mod ...
相关推荐
PBE算法是对称加密算法的综合算法,常见算法PBEWithMD5AndDES,使用MD5和DES算法构建了PBE算法。将盐附加在口令上,通过消息摘要算法经过迭代获得构建密钥的基本材料,构建密钥后使用对称加密算法进行加密解密。 ...
OpenSSL 对称加密算法中如何添加新算法 OpenSSL 是一个开源的加密算法库,它提供了对称加密算法、非对称加密算法、哈希算法等多种加密算法。OpenSSL 的对称加密算法中可以添加新算法,以满足不同的加密需求。下面...
7. **PBE(Password-Based Encryption)**:基于密码的加密,通常结合盐值和迭代次数,用于存储密码。PBEUtil.java可能涉及PBE算法,用于加密敏感信息,如用户密码。 8. **RC4**:RC4是一种流式加密算法,对称加密...
2. **PBE(Password-Based Encryption)**:基于密码的加密,通常结合PBKDF2(Password-Based Key Derivation Function 2)算法来增强安全性。使用`Cipher`类,并指定相应的密钥派生算法,如`PBEKeySpec`和`...
在实际应用部分,书中的源代码部分(Java加密与解密的艺术--源代码.rar)提供了详细的示例,覆盖了SSL/TLS协议的实现,网络通信的安全,以及PBE(Password-Based Encryption)和PKCS#7等标准的使用。这些代码实例...
C#支持多种加密算法,如对称加密(如AES、DES、3DES)、非对称加密(如RSA、DSA)和哈希函数(如MD5、SHA1、SHA256)。其中,对称加密速度快,适合大量数据的加密;非对称加密安全性高,但速度较慢,常用于密钥交换...
Java 中有多种对称加密算法,包括 DES、3DES、AES、PBE 等。下面我们将详细介绍这些算法的实现。 一、DES 算法 DES(Data Encryption Standard)是一种对称加密算法,使用 56 位密钥进行加密和解密。Java 中可以...
此外,它还提供了PBE(Password-Based Encryption)和PBKDF2(Password-Based Key Derivation Function 2)等密码基础架构,用于基于密码的加密和密钥派生。 总结,Bouncy Castle 1.64 API是一个强大而全面的加密库...
3. **密钥管理**:支持PKCS#8和PKCS#12格式的密钥存储,允许用户管理和导出加密密钥,同时支持PBE(基于口令的加密)算法,便于安全存储和恢复加密密钥。 4. **asn.1编码解码**:ASN.1(抽象语法标记一号)是定义...
在加密领域,公钥和私钥是基于非对称加密技术的核心概念。非对称加密允许用户拥有两个密钥:一个公钥和一个私钥。公钥可以公开分享,用于加密数据;而私钥必须保密,用于解密由公钥加密的数据。这种机制为网络通信...
8. **Password-Based Encryption(PBE)**:基于口令的加密,允许使用用户密码生成加密密钥,但需要注意的是,口令必须安全存储,通常会用哈希函数和盐值加强。 9. **Java Cryptography API (JCA) 和 JCE**:JCA是...