加密(一)

1.pom.xml

<dependencies>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.47</version>
    </dependency>
</dependencies>

2.ImoocDES.java

package com.mypro.symmetry.des;
import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.security.spec.InvalidKeySpecException;
/**
 * Created by wgg on 2017/6/19.
 */
public class ImoocDES {
    public static String src ="ImoocDES";
    public static void main(String[] args) {
        jdkDES();
        bsDES();
    }
    public static void jdkDES(){
        try {
            //生成key
            KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
            keyGenerator.init(56);//给定默认长度
            System.out.println("jdk Provider:"+keyGenerator.getProvider());
            SecretKey secretKey = keyGenerator.generateKey();
            byte[] bytesKey =secretKey.getEncoded();
            System.out.println("bytesKey:"+Hex.encodeHexString(bytesKey));

            //key的转换
            DESKeySpec desKeySpec = new DESKeySpec(bytesKey);
            SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
            Key convertSecretKey = factory.generateSecret(desKeySpec);

            System.out.println("Key:"+convertSecretKey);

            //加密
            Cipher cipher =Cipher.getInstance("DES/ECB/PKCS5Padding");
            //加密模式,和key
            cipher.init(Cipher.ENCRYPT_MODE,convertSecretKey);
            byte[] result = cipher.doFinal(src.getBytes("UTF-8"));

            System.out.println("jdk des encrypt:"+ Hex.encodeHexString(result));


            cipher.init(Cipher.DECRYPT_MODE,convertSecretKey);
            result = cipher.doFinal(result);

            System.out.println("jdk des decrypt:"+new String(result,"UTF-8"));

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidKeySpecException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        }
    }


    public static void bsDES(){
        try {
            Security.addProvider(new BouncyCastleProvider());
            //生成key
            KeyGenerator keyGenerator = KeyGenerator.getInstance("DES","BC");
            keyGenerator.init(56);//给定默认长度
            System.out.println("bc Provider:"+keyGenerator.getProvider());
            SecretKey secretKey = keyGenerator.generateKey();
            byte[] bytesKey =secretKey.getEncoded();
            //key的转换
            DESKeySpec desKeySpec = new DESKeySpec(bytesKey);
            SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");
            Key convertSecretKey = factory.generateSecret(desKeySpec);
            //加密
            Cipher cipher =Cipher.getInstance("DES/ECB/PKCS5Padding");
            //加密模式,和key
            cipher.init(Cipher.ENCRYPT_MODE,convertSecretKey);
            byte[] result = cipher.doFinal(src.getBytes("UTF-8"));
            System.out.println("BC des encrypt:"+ Hex.encodeHexString(result));

            cipher.init(Cipher.DECRYPT_MODE,convertSecretKey);
            result = cipher.doFinal(result);

            System.out.println("BC des decrypt:"+new String(result,"UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidKeySpecException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        }
    }
}
运行图:

3.Imooc3DES.java

package com.mypro.symmetry.des;

import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.*;
import javax.crypto.spec.DESedeKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.security.spec.InvalidKeySpecException;

/**
 * Created by wgg on 2017/6/19.
 */
public class Imooc3DES 
    public static String src ="Imooc3DES";
    public static void main(String[] args) {
        jdk3DES();
       // bc3DES();
    }
    public static void jdk3DES(){
        try {
            //生成key
            KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");
            //keyGenerator.init(112);//给定默认长度
            keyGenerator.init(new SecureRandom());
            System.out.println("jdk Provider:"+keyGenerator.getProvider());
            SecretKey secretKey = keyGenerator.generateKey();
            byte[] bytesKey =secretKey.getEncoded();

            //key的转换
            DESedeKeySpec desKeySpec = new DESedeKeySpec(bytesKey);
            SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede");
            Key convertSecretKey = factory.generateSecret(desKeySpec);

            //加密
            Cipher cipher =Cipher.getInstance("DESede/ECB/PKCS5Padding");
            //加密模式,和key
            cipher.init(Cipher.ENCRYPT_MODE,convertSecretKey);
            byte[] result = cipher.doFinal(src.getBytes("UTF-8"));

            System.out.println("jdk 3des encrypt:"+Hex.encodeHexString(result));
            
            cipher.init(Cipher.DECRYPT_MODE,convertSecretKey);
            result = cipher.doFinal(result);

            System.out.println("jdk 3des decrypt:"+new String(result,"UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidKeySpecException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        }
    }
    public static void bc3DES() {

    }
}
运行图:

4.ImoocAES.java

package com.mypro.symmetry.des;

import org.apache.commons.codec.binary.Hex;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

/**
 * Created by Administrator on 2017/6/19.
 */
public class ImoocAES {

    public static String src ="ImoocAES";
    public static void main(String[] args) {
        jdkAES();
    }
    public static void jdkAES(){
        try {
            //生成key
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            //keyGenerator.init(56);//给定默认长度
            keyGenerator.init(new SecureRandom());
            System.out.println("jdk Provider:"+keyGenerator.getProvider());
            SecretKey secretKey = keyGenerator.generateKey();
            byte[] bytesKey =secretKey.getEncoded();

            Key key = new SecretKeySpec(bytesKey,"AES");

             //加密
            Cipher cipher =Cipher.getInstance("AES/ECB/PKCS5Padding");
            //加密模式,和key
            cipher.init(Cipher.ENCRYPT_MODE,key);
            byte[] result = cipher.doFinal(src.getBytes("UTF-8"));
            System.out.println("jdk aes encrypt:"+ Hex.encodeHexString(result));
            cipher.init(Cipher.DECRYPT_MODE,key);
            result = cipher.doFinal(result);
            System.out.println("jdk aes decrypt:"+new String(result,"UTF-8"));

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}
运行图:
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容