`
xly1981
  • 浏览: 146667 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DES的java实现小记

    博客分类:
  • java
阅读更多
package com.des;

import java.security.SecureRandom;

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

public class DES {
	
	
	 public static byte[] encrypto(byte input[], byte key[])
     throws Exception{
		 byte plainData[];
	     int len = (input.length / 8 + (input.length % 8 != 0 ? 1 : 0)) * 8;
	     plainData = new byte[len];
	     System.arraycopy(input, 0, plainData, 0, input.length);
	     SecureRandom sr;
	     DESKeySpec dks;
	     SecretKeyFactory keyFactory;
	     sr = new SecureRandom();
	     dks = new DESKeySpec(key);
	     keyFactory = SecretKeyFactory.getInstance("DES");
	     SecretKey secretKey  = keyFactory.generateSecret(dks);
	     Cipher cipher = null;
	     cipher = Cipher.getInstance("DES/ECB/NoPadding");
	     cipher.init(1, secretKey, sr);
	     
	     byte encryptedData[];
	     encryptedData = cipher.doFinal(plainData);
	        
	     return encryptedData;
	 }

	 
	 public static byte[] decrypto(byte input[], byte key[])
     throws Exception
 {
		 	SecretKeyFactory keyFactory = null;
	        keyFactory = SecretKeyFactory.getInstance("DES");
	        javax.crypto.SecretKey secretKey = null;
	        secretKey = keyFactory.generateSecret(new DESKeySpec(key));
	        Cipher cipher = null;
	        cipher = Cipher.getInstance("DES/ECB/NoPadding");
	        cipher.init(2, secretKey);
	        byte decryptedData[];
	        decryptedData = cipher.doFinal(input);
	        return decryptedData;
}
	 
	 public static void main(String... args) throws Exception{
		 String key="0808080808080808";
		 byte[] realkey=fromHex(key);
		 byte[] afterDes=encrypto("aaaaaaaaaa".getBytes(),realkey);
		 System.out.println(toHex(afterDes));
		 
		 byte[] desBack=decrypto(afterDes,realkey);
		 System.out.println(new String(desBack));
	 }
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 public static final byte[] fromHex(String b)
	    {
	        char data[] = b.toCharArray();
	        int l = data.length;
	        byte out[] = new byte[l >> 1];
	        int i = 0;
	        for(int j = 0; j < l;)
	        {
	            int f = Character.digit(data[j++], 16) << 4;
	            f |= Character.digit(data[j++], 16);
	            out[i] = (byte)(f & 0xff);
	            i++;
	        }

	        return out;
	    }

	    public static final String toHex(byte b[])
	    {
	        char buf[] = new char[b.length * 2];
	        int j;
	        for(int i = j = 0; i < b.length; i++)
	        {
	            int k = b[i];
	            buf[j++] = hex[k >>> 4 & 0xf];
	            buf[j++] = hex[k & 0xf];
	        }

	        return new String(buf);
	    }
	    
	    private static final char hex[] = {
	        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
	        'A', 'B', 'C', 'D', 'E', 'F'
	    };

}
分享到:
评论

相关推荐

    基于java实现的des算法

    基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...

    DES算法Java实现

    在Java中实现DES算法,主要涉及到`java.security`和`javax.crypto`这两个包。首先,我们需要创建一个`SecretKey`对象,这个对象包含了用于加密和解密的密钥。DES密钥长度固定为64位,但实际有效位只有56位,因为每8...

    Triple-DES java实现

    Triple-DES 加密解密算法的java实现

    3DES加密java实现

    本篇文章将详细探讨Java环境下如何实现3DES加密算法,并介绍相关知识点。 首先,让我们了解3DES的工作原理。3DES是对原始DES算法的扩展,它通过执行三次加密过程来提高安全性。简而言之,3DES分为两种模式:EDE...

    des加密解密java实现版本

    本篇文章将详细阐述DES加密解密的Java实现过程。 首先,我们需要了解DES算法的基本原理。DES是一种块密码,它将明文数据分成64位的数据块进行处理,其中包含56位的密钥。通过一系列复杂的置换和代换操作,将明文块...

    DES加密Java实现

    DES加密的Java实现,从算法来实现。

    DES_DES加密算法JAVA实现_

    以下是Java实现DES加密算法的基本步骤: 1. **密钥生成**: 首先,我们需要生成一个DES密钥。在Java中,可以使用`KeyGenerator`类来生成密钥。例如: ```java KeyGenerator keyGen = KeyGenerator.getInstance(...

    DES java实现 只是简单的对string的加解密

    DES 的java实现 因为是课程作业所以只是写的一个简单的 对string的 加解密

    DES加密算法JAVA实现(带简单界面)

    在Java中实现DES加密,主要涉及到`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于进行加解密操作。首先,你需要生成一个DES密钥,这通常包括设定密钥长度(DES的标准长度为56位,但在Java中是...

    Java实现文件的RSA和DES加密

    Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...

    DES.rar_DES java_DES JAVA_Des___JAVA_des_java des

    标题中的"DES.rar_DES java_DES JAVA_Des___JAVA_des_java des"表明这是一个关于Java实现DES加密算法的压缩包文件。DES(Data Encryption Standard)是一种广泛应用的块密码,它在1970年代由IBM开发,后来被美国国家...

    DES 有界面,用JAVA实现

    总的来说,"DES有界面,用JAVA实现"的项目是一个很好的学习密码学和JAVA编程实践的案例。它涵盖了对称加密算法的理解、GUI编程技巧、以及密码学中的安全实践。通过这个项目,开发者不仅可以深入理解DES的工作原理,...

    DESjava实现源码(the5fire.net)

    总的来说,这份源码提供了一个使用Java实现DES加密算法的例子,适用于学习和理解对称加密的基本原理和Java的相关API用法。对于学习者来说,通过阅读和分析这些代码,可以加深对DES算法和Java加密库的理解,同时也能...

    DES算法java实现

    ### DES算法Java实现详解 #### 一、概述 **标题**:“DES算法java实现” **描述**:“DES算法的java实现, 密码编码学的实验二” **标签**:“DES javas” 本文章详细介绍了一种利用Java语言实现的DES(Data ...

    用java实现des加密

    Java DES加密是一种在Java编程环境中实现的对称加密算法,主要用来保护数据的安全性。DES(Data Encryption Standard)是早期广泛使用的一种加密标准,虽然现在已经被更安全的AES(Advanced Encryption Standard)所...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...

    des加密算法的JAVA 实现

    这个例子中,`Des算法JAVA的实现`文件可能包含了一个完整的Java程序,演示了上述步骤的代码实现。通过运行这个程序,你可以看到DES加密和解密的实际效果。然而,实际应用中,为了安全性,通常会使用更强大的加密算法...

    DES java实现类

    DES(Data Encryption Standard)是一种广泛使用的对称加密算法,它基于64位的数据块和64位的密钥进行操作。在Java中实现DES算法,...尽管如此,理解DES的工作原理和Java实现仍然对学习密码学和安全编程具有重要意义。

    s-des算法的Java实现和C++实现

    S-DES的Java实现会涉及对位数组的操作,如`BitSet`的`flip`, `set`, `get`等方法,以及`toString()`方法将位数组转换为字节表示。 **C++实现**: C++提供了丰富的位操作符,如`&`, `|`, `^`, `, `&gt;&gt;`,这使得实现S-...

    java版DES算法实现

    总的来说,Java版DES算法实现涉及到了对称加密的基本原理、Java安全套件API的使用、以及在实际开发中如何封装和扩展这些功能。在理解并实现这些知识点后,开发者可以更好地在项目中集成数据加密功能,确保信息安全。

Global site tag (gtag.js) - Google Analytics