`
lvjun106
  • 浏览: 436172 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

JAVA对称加密算法

    博客分类:
  • JAVA
 
阅读更多

[转:http://liulang203.iteye.com/blog/1028257]

一、DES算法 
   设置算法及参数 

Java代码  收藏代码
  1. //算法名称  
  2. public static final String KEY_ALGORITHM = "DES";  
  3. //算法名称/加密模式/填充方式  
  4. public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding";  


   生成密钥 

Java代码  收藏代码
  1. KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM);  
  2. keyGenerator.init(56);  
  3. SecretKey secretKey = keyGenerator.generateKey();  
  4. return secretKey.getEncoded();  


   还原密钥 

Java代码  收藏代码
  1. private static Key toKey(byte[] key) {  
  2.     DESKeySpec des = new DESKeySpec(key);  
  3.     SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);  
  4.     SecretKey secretKey = keyFactory.generateSecret(des);  
  5.     return secretKey;  
  6. }  


    加密 

Java代码  收藏代码
  1. public static byte[] encrypt(byte[] data ,byte[] key) {  
  2.     Key k = toKey(key);  
  3.     Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);  
  4.     cipher.init(Cipher.ENCRYPT_MODE, k);  
  5.     return cipher.doFinal();  
  6. }  


     解密 

Java代码  收藏代码
  1. Key k = toKey(key);  
  2. Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);  
  3. cipher.init(Cipher.DECRYPT_MODE, k);  
  4. return cipher.doFinal();  


注:加密和解密的区别在于init初始化时模式 
二、三重DES---DESede 
    其过程同上只需把变声明算法改变一下,Java6支持的密钥长度为112或168 

Java代码  收藏代码
  1. //算法名称  
  2. public static final String KEY_ALGORITHM = "DESede";  
  3. //算法名称/加密模式/填充方式  
  4. public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";  


   还原密钥 

Java代码  收藏代码
  1. DESedeKeySpec des = new DESedeKeySpec(key);  
  2.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);  
  3.         SecretKey secretKey = keyFactory.generateSecret(des);  


三、AES算法 
   同DES基本一致。 

Java代码  收藏代码
  1. public static final String KEY_ALGORITHM = "AES";  
  2. public static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";  
  3. private static Key toKey(byte[] key){  
  4.     SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);  
  5.     return secretKey;  
  6. }  


四、IDEA 同AES算法一致。 

Java代码  收藏代码
  1. public static final String KEY_ALGORITHM = "IDEA";  
  2. public static final String CIPHER_ALGORITHM = "IDEA/ECB/PKCS5Padding";  
  3. private static Key toKey(byte[] key){  
  4.     SecretKey secretKey = new SecretKeySpec(key, KEY_ALGORITHM);  
  5.     return secretKey;  
  6. }  



五、基本口令加密---PBE 

Java代码  收藏代码
  1. import java.security.Key;  
  2. import java.security.SecureRandom;  
  3.   
  4. import javax.crypto.Cipher;  
  5. import javax.crypto.SecretKey;  
  6. import javax.crypto.SecretKeyFactory;  
  7. import javax.crypto.spec.PBEKeySpec;  
  8. import javax.crypto.spec.PBEParameterSpec;  
  9.   
  10. public class PBECode {  
  11.     public static final String ALGORITHM = "PBEWITHMD5andDES";  
  12.     //迭代次数  
  13.     public static final int ITERATION_COUNT = 100;  
  14.     /** 
  15.      * 盐初始化<br> 
  16.      * 盐长度必须为8字节 
  17.      * @return byte[] 盐 
  18.      */  
  19.     public static byte[] initSalt(){  
  20.         //实例化安全随机数  
  21.         SecureRandom random = new SecureRandom();  
  22.         //生产盐  
  23.         return random.generateSeed(8);  
  24.     }  
  25.     /** 
  26.      * 转换密钥 
  27.      * @param password 密码 
  28.      * @return key 密钥 
  29.      * @throws Exception 
  30.      */  
  31.     private static Key toKey(String password)throws Exception{  
  32.         //密钥材料转换  
  33.         PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());  
  34.         //实例化  
  35.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);  
  36.         SecretKey secretKey = keyFactory.generateSecret(keySpec);  
  37.         return secretKey;  
  38.     }  
  39.     /** 
  40.      * 加密 
  41.      * @param data 数据 
  42.      * @param password 密码 
  43.      * @param salt 盐 
  44.      * @return byte[] 加密数据 
  45.      * @throws Exception 
  46.      */  
  47.     public static byte[] encrypt(byte[] data,String password,byte[] salt) throws Exception{  
  48.         Key key = toKey(password);  
  49.         //实例化PBE参数材料  
  50.         PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, ITERATION_COUNT);  
  51.         Cipher cipher = Cipher.getInstance(ALGORITHM);  
  52.         cipher.init(Cipher.ENCRYPT_MODE, key,parameterSpec);  
  53.         return cipher.doFinal(data);  
  54.     }  
  55.     public static byte[] decrypt(byte[] data, String password,byte[] salt) throws Exception{  
  56.         Key key = toKey(password);  
  57.         //实例化PBE参数材料  
  58.         PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, ITERATION_COUNT);  
  59.         Cipher cipher = Cipher.getInstance(ALGORITHM);  
  60.         cipher.init(Cipher.DECRYPT_MODE, key,parameterSpec);  
  61.         return cipher.doFinal(data);  
  62.     }  
  63. }  
分享到:
评论

相关推荐

    java对称加密算法总结

    本人总结了一些对称的加密算法,希望可以给一些朋友带来帮助!!

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

    Java对称加密算法DES实例详解 Java对称加密算法是使用对称密钥进行加密和解密的加密算法,其加密和解密使用相同的密钥。Java中对称加密算法有多种,而DES(Data Encryption Standard)是其中一种古老的对称加密...

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

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

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

    "Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...

    非对称加密算法 数字签名算法

    非对称加密算法和数字签名是信息技术中两个关键...总之,非对称加密算法和数字签名是保障网络通信安全的重要工具,Java提供了丰富的库支持这些功能的实现。理解并熟练运用这些技术,对于开发安全的应用和系统至关重要。

    Java非对称加密算法

    这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com

    对称加密算法分析及用Java实现.zip

    本资料包“对称加密算法分析及用Java实现.zip”包含了关于这一主题的详细内容,特别是如何使用Java编程语言来实现对称加密算法。 对称加密算法的核心特点是加密和解密使用相同的密钥,这简化了密钥管理,但也带来了...

    Rsa.rar_RSA 算法_java 非对称 加密 算法_rsa java

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输中的安全保护。这个RAR压缩包包含了一个名为“Rsa.java”的源代码文件,可能是用于演示如何在Java环境中实现RSA算法。另一个文件...

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

    1. **AES(Advanced Encryption Standard)**:高级加密标准,是一种对称加密算法,因其高效性和安全性被广泛应用。AESUtil.java可能是实现AES加密解密功能的工具类,通常包括AES的ECB、CBC、CFB、OFB和CTR模式,...

    常用加密算法的Java实现总结(二)——对称加密算法DES、3DES和AES.pdf

    对称加密算法包括了多种算法,本文主要介绍DES、3DES和AES这三种常见的对称加密算法,并对它们进行Java实现的总结。 首先,对称加密算法的一个关键优势在于其算法公开、计算量小、加密速度快、加密效率高,但它们也...

    java 对称加密算法实现详解

    Java 对称加密算法实现详解 Java 对称加密算法是指加密和解密方式呈对称格式,即解密是加密的逆过程。Java 中有多种对称加密算法,包括 DES、3DES、AES、PBE 等。下面我们将详细介绍这些算法的实现。 一、DES 算法...

    非对称加密算法

    而非对称加密算法则采用了一对密钥,包括一个公钥和一个私钥。公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密数据。这种设计使得即使公钥被他人获取,也无法解密由私钥加密的信息,极大地增强了通信...

    对称加密算法Blowfish(java).rar

    《对称加密算法Blowfish在Java环境中的应用》 对称加密算法是信息安全领域中的一种基础技术,它以其高效性和简洁性广泛应用于数据保护。Blowfish算法作为其中的一员,由 Bruce Schneier 在1993年设计,以其优秀的...

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

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

    Java非对称加密算法演示源码.rar

    一个来自Java非对称加密算法演示源码,通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,将公钥的KeySpec对象转换为公钥,张三用自己的私钥解密从李四处收到的信息,里面对原理的...

    JAVA的加密算法及应用

    对称加密算法使用同一个密钥进行加密和解密操作,而非对称加密算法则需要一对密钥——公钥用于加密,而私钥用于解密。 ##### 2.1 对称加密算法 对称加密算法因其高效性和易于实现的特点,在日常应用中非常普遍。...

    DES对称加密算法Java实现

    DES算法为密码体制中的对称密码体制,是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。 这里以Java代码实现DES算法。

    JAVA 加密算法(很好的算法,经典摘要)

    Java中常见的对称加密算法包括: - DES(Data Encryption Standard):一种古老的64位块加密算法,已被AES取代。 - 3DES(Triple DES):对DES进行了三次加密,提高了安全性,但速度较慢。 - AES(Advanced ...

    java 加密算法及原理.jar

    Java中内置了DES(Data Encryption Standard)、3DES(Triple DES)以及AES(Advanced Encryption Standard)等对称加密算法。 - **DES**:是一种古老的加密算法,使用64位的密钥,但实际有效密钥长度只有56位,...

Global site tag (gtag.js) - Google Analytics