`

在Java中使用DES算法(转)

阅读更多

Java加密扩展即Java Cryptography Extension,简称JCE。它是Sun的加密服务软件,包含了加密和密匙生成功能。JCE是JCA(Java Cryptography Architecture)的一种扩展。

JCE没有规定具体的加密算法,但提供了一个框架,加密算法的具体实现可以作为服务提供者加入。除了JCE框架之外,JCE软件包还包含了SunJCE服务提供者,其中包括许多有用的加密算法,比如DES(Data Encryption Standard)和Blowfish。

为简单计,在本文中我们将用DES算法加密和解密字节码。下面是用JCE加密和解密数据必须遵循的基本步骤:

步骤1:生成一个安全密匙。在加密或解密任何数据之前需要有一个密匙。密匙是随同被加密的应用一起发布的一小段数据,Listing 3显示了如何生成一个密匙。
【Listing 3:生成一个密匙】

// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();

// 为我们选择的DES算法生成一个KeyGenerator对象
KeyGenerator kg = KeyGenerator.getInstance( "DES" );
kg.init( sr );

// 生成密匙
SecretKey key = kg.generateKey();

// 获取密匙数据
byte rawKeyData[] = key.getEncoded();

/* 接下来就可以用密匙进行加密或解密,或者把它保存
为文件供以后使用 */
doSomething( rawKeyData );



步骤2:加密数据。得到密匙之后,接下来就可以用它加密数据。除了解密的ClassLoader之外,一般还要有一个加密待发布应用的独立程序(见Listing 4)。
【Listing 4:用密匙加密原始数据】

// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();

byte rawKeyData[] = /* 用某种方法获得密匙数据 */;

// 从原始密匙数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 创建一个密匙工厂,然后用它把DESKeySpec转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );

// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance( "DES" );

// 用密匙初始化Cipher对象
cipher.init( Cipher.ENCRYPT_MODE, key, sr );

// 现在,获取数据并加密
byte data[] = /* 用某种方法获取数据 */

// 正式执行加密操作
byte encryptedData[] = cipher.doFinal( data );

// 进一步处理加密后的数据
doSomething( encryptedData );


步骤3:解密数据。运行经过加密的应用时,ClassLoader分析并解密类文件。操作步骤如Listing 5所示。
【Listing 5:用密匙解密数据】

// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();

byte rawKeyData[] = /* 用某种方法获取原始密匙数据 */;

// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec( rawKeyData );

// 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( dks );

// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance( "DES" );

// 用密匙初始化Cipher对象
cipher.init( Cipher.DECRYPT_MODE, key, sr );


// 现在,获取数据并解密
byte encryptedData[] = /* 获得经过加密的数据 */

// 正式执行解密操作
byte decryptedData[] = cipher.doFinal( encryptedData );

// 进一步处理解密后的数据
doSomething( decryptedData );

分享到:
评论

相关推荐

    基于java实现的des算法

    2. Java语言可以用来实现DES算法,通过使用Java的输入/输出流和字符串操作来实现加密和解密。 3. 读取文件的函数可以使用Java的FileInputStream和InputStreamReader来实现。 4. 初始化函数可以使用固定的数组来初始...

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

    主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下

    java编写的des算法

    用java编写的des算法,通俗易懂,适合学习网络安全的同学借鉴

    DES算法Java实现

    `DES-master`这个压缩包可能包含了一个完整的Java项目,用于演示如何在实际开发环境中使用DES和3DES算法。 总之,DES和3DES算法在Java中实现并不复杂,主要涉及`KeyGenerator`、`Cipher`以及`SecretKey`等核心类。...

    java实现的des算法

    ### Java 实现 DES 加密解密算法详解 ...需要注意的是,在实际项目中,考虑到DES算法的安全性问题,建议使用更安全的加密算法如AES。此外,在处理敏感数据时,还需要考虑密钥管理、数据完整性保护等方面的问题。

    Java 实现DES算法源码

    在Java中,我们可以使用`javax.crypto`包中的类来实现DES算法。主要涉及的类有: 1. **Cipher**:这是Java加密API中的核心类,用于执行加密和解密操作。 2. **SecretKey**:表示对称密钥,用于加解密。 3. **...

    3DES算法计算MAC

    3DES 算法计算 MAC ...例如,在金融交易中,使用 3DES 算法可以保护交易数据的安全。 3DES 算法是一种安全的加密算法,广泛应用于各种领域。然而,它也存在一些缺点,需要根据实际情况选择合适的加密算法。

    Java中3DES加密解密示例(封装byte数组16进制互转)

    在本示例中,我们将展示如何使用 3DES 算法在 Java 中实现加密和解密操作,并封装 byte 数组和 16 进制字符串之间的互转。 Java 中的 3DES 加密算法 在 Java 中,我们可以使用 javax.crypto 包中的 Cipher 类来...

    DES算法java实现

    通过上述代码,我们了解到了如何在Java中实现DES算法的基本框架。这种实现方式不仅简洁高效,而且易于理解和维护。在实际应用中,可以根据具体需求调整密钥设置、增加错误处理逻辑等,以满足更复杂的应用场景。需要...

    java编写的DES算法

    下面将详细介绍DES算法以及如何在Java中使用它。 DES算法起源于1970年代,由IBM开发并被美国国家标准局(NIST)采纳为标准。它基于块加密,每次处理64位的数据块,使用56位的密钥进行加密。DES算法通过一系列复杂的...

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

    DES算法在1970年代由IBM开发,并在1977年被美国国家标准局(NIST)采纳为标准。该算法的核心是Feistel网络,它通过16轮迭代过程将明文转换成密文。每轮迭代中包含了一系列的子步骤,如置换、异或和函数F。DES虽然...

    DES算法-Java实现

    在Java中实现DES算法,我们需要理解其工作原理并利用Java的`javax.crypto`包提供的接口。 DES算法主要包含以下几个步骤: 1. **初始置换(IP)**:输入的64位明文首先通过初始置换,将数据重新排列,目的是增加...

    JAVA中3des加密算法

    Java中的3DES(Triple Data Encryption Algorithm)是一种强化版的DES(Data Encryption Standard)加密算法,它通过三次应用DES算法来提高安全性。3DES是DES的一个变种,它使用了两个不同的密钥对数据进行三次加密...

    java用于实现DES算法!

    java代码用于实现DES算法,代码注释相当清楚,一看就明白!

    java版DES算法实现

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

    DES密码算法使用Java实现

    在Java中实现DES算法,我们需要使用`javax.crypto`包中的相关类。首先,我们需要创建一个密钥,这通常通过`KeyGenerator`类完成。DES的密钥生成器需要指定为`DESKeySpec`,然后使用`KeyGenerator.getInstance("DES")...

    JAVA实现des加密算法 实例

    DES(Data Encryption Standard)是一种对称加密算法,广泛应用于数据的加密保护。在Java中,我们可以使用`javax.crypto`包中的类来实现DES...在项目中使用时,需注意选择合适的模式和填充方式,以及密钥的安全管理。

    DES算法java实现代码

    本资源为DES算法java实现代码 数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常,自动取款机...

    java des算法 c 实现

    在Java和C等编程语言中,DES算法被广泛用于数据的安全传输和存储。本篇将详细介绍Java JDK内置的DES算法以及如何用C语言实现它。 首先,DES算法基于Feistel结构,使用64位的数据块进行加密,其中包含56位的有效密钥...

Global site tag (gtag.js) - Google Analytics