优选主流主机商
任何主机均需规范使用

如何用Java进行3DES加密(java 3DES加密示例)

3DES是三重数据加密,且可以逆推的一种算法方案。但由于3DES的算法是公开的,所以算法本身没有密钥可言,主要依靠唯一密钥来确保数据加解密的安全,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文:
 3DES加密过程为:C=Ek3(Dk2(Ek1(M)))
 3DES解密过程为:M=Dk1(EK2(Dk3(C)))

SecretKeyFactory.getInstance(“DESede”)

DESede 相比 DES ,多出的ede,正好是encrypt – decrypt -encrypt,使用3条56位的密钥对数据进行三次加密。

java示例:

 1   /**
 2      *
 3      * @param key 秘钥
 4      * @param text 需要加密的数据
 5      * @return
 6      * @throws Exception
 7      * 简单了解下 : DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,
 8      * 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,较为容易破解。
 9      */
10     public static String encrypt(String key,String text) throws  Exception {
11         try {
12             byte[] src = text.getBytes("utf-8");
13             //DESedeKeySpec会帮你生成24位秘钥,key可以是任意长度
14             DESedeKeySpec spec = new DESedeKeySpec(key.getBytes("utf-8"));
15             SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
16             SecretKey secretKey = factory.generateSecret(spec);
17             Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
18             cipher.init(Cipher.ENCRYPT_MODE, secretKey);
19             byte[] res = cipher.doFinal(src);
20             //encodeBase64会对字符串3位一组自动补全,因而最后可能会出现 == 或者 =
21             return new String(Base64.encodeBase64(res), "utf-8");
22 
23         } catch (Exception e) {
24             System.out.println("error");
25         }
26         return null;
27     }
new DESedeKeySpec(key.getBytes("utf-8"))
 public DESedeKeySpec(byte[] var1, int var2) throws InvalidKeyException {
        if(var1.length - var2 < 24) {
            throw new InvalidKeyException("Wrong key size");
        } else {
            this.key = new byte[24];
            System.arraycopy(var1, var2, this.key, 0, 24);
        }
    }

目前主流加密手段大致可分为单向加密和双向加密:

单向加密:通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:MD5,SHA

双向加密:与单向加密相反,可以把密文逆推还原成明文,双向加密又分为 对称加密和非对称加密

对称加密:指数据使用者必须拥有相同的密钥才可以进行加密解密,就像彼此约定的一串暗号。算法代表:DES,3DES,AES,IDEA,RC4,RC5

非对称加密:相对对称加密而言,非对称加密需要公开密钥和私有密钥两组密钥,公开密钥和私有密钥是配对起来的,也就是说使用公开密钥进行数据加密,只有对应的私有密钥才能解密,只能使用该用户的加密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。这里把公开的密钥为公钥,不公开的密钥为私钥。算法代表:RSA,DSA

  MD5SHAHMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。

未经允许不得转载:搬瓦工中文网 » 如何用Java进行3DES加密(java 3DES加密示例)