用Java实现3DES

3DES,即三重DES,是DES的加强版,也是DES的一个更安全的变形。它使用3个56位(共168位)的密钥对数据进行三次加密,和DES相比,安全性得到了较大的提高。

实际上,3DES是一个过渡的加密算法。1999年,NIST将3-DES指定为DES向AES过渡的加密标准。

3DES以DES为基本模块,通过组合分组方法设计出分组加密算法。若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密,大大加强了数据的安全性。

若数据对安全性要求不高,可以让其中的两个密钥相等,这样,密钥的有效长度也有112位。

在Java的加密体系中,使用3DES非常简单,程序结构和使用DES时相同,只不过在初始化时将算法名称由"DES"改为"DESede"即可。

下列程序基本原理和P12_01相同,只不过将加密和解密过程写在一起。

import java.security.Security;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

public class P12_02   {

public static void main(String[] args) throws Exception  {

//KeyGenerator提供对称密钥生成器的功能,支持各种算法

KeyGenerator keygen;

//SecretKey负责保存对称密钥

SecretKey deskey;

//Cipher负责完成加密或解密工作

Cipher c;

Security.addProvider(new com.sun.crypto.provider.SunJCE());

//实例化支持3DES算法的密钥生成器,算法名称用DESede

keygen = KeyGenerator.getInstance("DESede");

//生成密钥

deskey = keygen.generateKey();

//生成Cipher对象,指定其支持3DES算法

c = Cipher.getInstance("DESede");

String msg = "郭克华_安全编程技术";

System.out.println("明文是:" + msg);

//根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

c.init(Cipher.ENCRYPT_MODE, deskey);

byte[] src = msg.getBytes();

//加密,结果保存进enc

byte[] enc = c.doFinal(src);

System.out.println("密文是:" + new String(enc));

//根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式

c.init(Cipher.DECRYPT_MODE, deskey);

//解密,结果保存进dec

byte[] dec = c.doFinal(enc);

System.out.println("解密后的结果是:"+ new String(dec));

}

}

时间: 2024-11-04 10:47:44

用Java实现3DES的相关文章

Java实现3DES加密--及ANSI X9.8 Format标准 PIN PAN获取PIN BlOCK

1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位,当只有16位时,后8位取key的前8位 ANSI X9.8标准 PIN xor PAN获取PIN BlOCK (1) ANSI X9.8 Format(不带主账号信息) PIN(个人识别码 Personal Identity Number)总共有8个byte长度,分为两个部分;(类似数据包的格式)

java 的3DES解密和加密

/**     * 3des解密     *     * @param ss     *            要解密的数据     * @param deskey     *            生成密钥用的数组     * @return     * @throws NoSuchAlgorithmException     * @throws NoSuchPaddingException     * @throws InvalidKeyException     * @throws Ill

JAVA C++ 3DES加解密对接,转载

转载自: http://www.cnblogs.com/WonKerr/archive/2009/11/11/DES_C_JAVA.html

实现使用3des在页面js加密,后台java解密

/** *secretKey密钥需与java的3des的secretKey相同 *在我的代码实现中secretKey是在后台生产,放入到redis的,每一次进入页面都会新生产一个.大家也可以把这个值写死在这里 */ secretKey = "0123456789abcd0123456789"; //varStr需要加密的字符串 //enStr是已加密的字符串 var enStr=DES3.encrypt(secretKey,varStr); 后台java解密实现: //secretKe

[转]Java 3DES(Desede、TripleDES)加密

转自:here 从数据安全谈起 当你使用网银时,是否担心你的银行卡会被盗用? 当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露? 作为开发者,编写安全的代码比编写优雅的代码更重要,因为安全是一切应用之根本!为了确保数据不被侵犯,数据加密/解密技术运用而生.    ——摘录自<Java加密解密的艺术> 所以为了确保数据传输和数据存储的安全,我们可以通过特定的算法,将数据明文加密成复杂的密文. 众多的加密手段大致可以分为单项加密和双向加密.单项加密指通过对数据进行摘要计算生成密文,密文不可逆推

3DES加解密【示例】

代码 /** * 3DES加解密 */ public class DESedeUtils { private static final String ALGORITHM_MD5 = "md5"; private static final String ALGORITHM_DESEDE = "DESede";//加密算法,可用 DES,DESede,Blowfish private static final String CHARSET = "UTF-8&q

C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密

public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summary> /// <param name="input">需要加密的字符串</param> /// <returns></returns> public static string Base64Encrypt(string input)

PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 的解决方法

我也是PHP新手,通过w3cschool了解了一下php基本原理之后就开写了.但仍是菜鸟. 先不管3DES加密的方法对不对,方法都是网上的,在运行的时候报了个错,把小弟整死了.找来找去终于自己摸出了方法. <?php /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo Hui (farmer.luo at gmail.com) * * @version: V0.1 2008.12.04 * */ class Cr

java 常见的加密算法

java 常见的加密算法 加密算法分类: v 只能加密:SHA  MD5 v 既能加密也能解密: 对称:DES  RC4 非对称:RSA 非对称加密技术开销比较大,不适合大文本的加密. Java代码实现SHA算法 /* SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具, 被广泛地应用于电子商务等信息安全领域.虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全*/ public class SHAE