java使用des加密解密示例分享_java

复制代码 代码如下:

import java.security.Key;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class Des
{
    public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding";
    private static Log log = LogFactory.getLog(Des.class);

    /**
     * DES算法,加密
     *
     * @param data 待加密字符串
     * @param key  加密私钥,长度不能够小于8位
     * @return 加密后的字节数组,一般结合Base64编码使用
     * @throws CryptException 异常
     */
    public static String encode(String key,String data) throws Exception
    {
        return encode(key, data.getBytes());
    }
    /**
     * DES算法,加密
     *
     * @param data 待加密字符串
     * @param key  加密私钥,长度不能够小于8位
     * @return 加密后的字节数组,一般结合Base64编码使用
     * @throws CryptException 异常
     */
    public static String encode(String key,byte[] data) throws Exception
    {
        try
        {
      DESKeySpec dks = new DESKeySpec(key.getBytes());

      SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            //key的长度不能够小于8位字节
            Key secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
            IvParameterSpec iv = new IvParameterSpec("********".getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);

            byte[] bytes = cipher.doFinal(data);
            return Base64.encode(bytes);
        } catch (Exception e)
        {
            throw new Exception(e);
        }
    }

    /**
     * DES算法,解密
     *
     * @param data 待解密字符串
     * @param key  解密私钥,长度不能够小于8位
     * @return 解密后的字节数组
     * @throws Exception 异常
     */
    public static byte[] decode(String key,byte[] data) throws Exception
    {
        try
        {
         SecureRandom sr = new SecureRandom();
      DESKeySpec dks = new DESKeySpec(key.getBytes());
      SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            //key的长度不能够小于8位字节
            Key secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
            IvParameterSpec iv = new IvParameterSpec("********".getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.DECRYPT_MODE, secretKey,paramSpec);
            return cipher.doFinal(data);
        } catch (Exception e)
        {
//         e.printStackTrace();
            throw new Exception(e);
        }
    }

    /**
     * 获取编码后的值
     * @param key
     * @param data
     * @return
     * @throws Exception
     * @throws Exception
     */
    public static String decodeValue(String key,String data) throws Exception
    {
     byte[] datas;
     String value = null;

     datas = decode(key, Base64.decode(data));

  value = new String(datas);
  if (value.equals("")){
   throw new Exception();
  }
     return value;
    }
}

时间: 2024-08-03 22:46:08

java使用des加密解密示例分享_java的相关文章

兼容PHP和Java的des加密解密代码分享_php实例

php代码: <?php class DES { var $key; var $iv; //偏移量 function DES($key, $iv=0) { $this->key = $key; if($iv == 0) { $this->iv = $key; } else { $this->iv = $iv; } } //加密 function encrypt($str) { $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MO

java加密解密示例分享_java

(1)先定义要实现的类,我先定义了一个抽象类 复制代码 代码如下: //图形类  abstract class  Shape{       int x,y;       int x1,y1;      Color color ;      Graphics g ;      byte type ;      public abstract void draw(Graphics g) ;  }  //直线类   class LineShape extends Shape{      public

Java实现DES加解密算法解析_java

本文实例讲述了Java实现DES加解密算法解析.分享给大家供大家参考,具体如下:   简介: 数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的.通常,自动取款机(Automated Teller Machine,ATM)都使用DEA.它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用

Android、iOS和Java通用的AES128加密解密示例代码_java

前言 移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如android和iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输. 这篇文章给大家分享AES的加密和解密.Android和ios通用的AES加密算法.大家可以直接集成到自己的项目.服务器接口如果是用Java写的话.整个框架都完美了.如果是.NET编写的后台接口的话.得改造一下哦 IOS加密 /*加密方法*/ (NSString *)AES256EncryptWithPlainText:(NSString

带密匙的php加密解密示例分享_php实例

复制代码 代码如下: <?php $id = "http://www.jb51.net";$token = encrypt($id, 'E', 'jb51');echo '加密:'.encrypt($id, 'E', 'jb51');echo '<br />';echo '解密:'.encrypt($token, 'D', 'jb51'); /***************************************************************

java的nio的使用示例分享_java

Java NIO(New Input/Output)--新的输入/输出API包--是2002年引入到J2SE 1.4里的.Java NIO的目标是提高Java平台上的I/O密集型任务的性能.过了十年,很多Java开发者还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2).NIO和NIO.2对于Java平台最大的贡献是提高了Java应用开发中的一个核心组件的性能:输入/输出处理.不过这两个包都不是很好用,并且它们也不是适用于所有的场景.如果能

java使用xpath解析xml示例分享_java

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 XPath 的提出的初衷是将其作为一个通用的.介于XPointer与XSL间的语法模型.但是 XPath 很快的被开发者采用来当作小型查询语言. XPathTest.java 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java

java模拟hibernate一级缓存示例分享_java

纯Java代码模拟Hibernate一级缓存原理,简单易懂. 复制代码 代码如下: import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; public class LevelOneCache { //这个对象就是用来模拟hibernate一级缓存的 private static Map<Integer, Student> stus=new HashMap&l

java集合求和最大值最小值示例分享_java

复制代码 代码如下: package com.happyelements.athene.game.util; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; import com.google.common.collect.Lists; /** * Math工具类 *  * @version 1.0 * @since 1.0 */public class M