Imooc

    xiaoxiao2021-12-14  16

    原视频地址 Imooc_JAVA实现对称加密1-1 JAVA-对称加密算法DES

    package DES; import java.security.NoSuchAlgorithmException; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import org.apache.commons.codec.binary.Hex; import org.bouncycastle.jce.provider.BouncyCastleProvider; public class DES { private static String src = "imooc security des"; public static void main(String[] args) { jdkDES(); bcDES(); } public static void jdkDES(){ try { //初始化KeyGenerator Key生成器 KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); keygenerator.init(56); //调用方法生成密匙secretKey 生成秘钥 SecretKey secretKey = keygenerator.generateKey(); //密钥进行getEncoded()获取比特编码byte[] byte[] byteskey = secretKey.getEncoded(); //KEY的转换 //实例化DES的相关内容 DESKeySpec desKeySpec = new DESKeySpec(byteskey); //通过秘钥的工厂实例化一个自身的类 getInstance("")的参数为指定的加密方式 SecretKeyFactory factory = SecretKeyFactory.getInstance("DES"); //通过factory调用方法生成秘钥 // generateSecret()参数为秘钥材料desKeySpec 该生成我们所需要的秘钥 SecretKey convertsecretKey =factory.generateSecret(desKeySpec); //KEY转换完之后 Cipher类的实例来进行加密和解密操作 //getInstance("加解密算法/工作方式/填充方式") Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); //cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY // Cipher.ENCRYPT_MODE加密模式 转换后的KEY:convertsecretKey cipher.init(Cipher.ENCRYPT_MODE, convertsecretKey); //doFinal(input); input即使要被加密的内容 byte[] result = cipher.doFinal(src.getBytes()); System.out.println("jdk des encrypt:"+Hex.encodeHexString(result)); //解密 //cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY // Cipher.ENCRYPT_MODE解密模式 转换后的KEY:convertsecretKey cipher.init(Cipher.DECRYPT_MODE, convertsecretKey); result = cipher.doFinal(result); System.out.println("jdk des decrypt:"+new String(result)); } catch (Exception e) { e.printStackTrace(); } }//jdkDES方法结束 public static void bcDES(){ try { Security.addProvider(new BouncyCastleProvider()); //初始化KeyGenerator Key生成器 KeyGenerator keygenerator = KeyGenerator.getInstance("DES","BC"); keygenerator.getProvider(); keygenerator.init(56); //调用方法生成密匙secretKey 生成秘钥 SecretKey secretKey = keygenerator.generateKey(); //密钥进行getEncoded()获取比特编码byte[] byte[] byteskey = secretKey.getEncoded(); //KEY的转换 //实例化DES的相关内容 DESKeySpec desKeySpec = new DESKeySpec(byteskey); //通过秘钥的工厂实例化一个自身的类 getInstance("")的参数为指定的加密方式 SecretKeyFactory factory = SecretKeyFactory.getInstance("DES"); //通过factory调用方法生成秘钥 // generateSecret()参数为秘钥材料desKeySpec 该生成我们所需要的秘钥 SecretKey convertsecretKey =factory.generateSecret(desKeySpec); //KEY转换完之后 Cipher类的实例来进行加密和解密操作 //getInstance("加解密算法/工作方式/填充方式") Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); //cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY // Cipher.ENCRYPT_MODE加密模式 转换后的KEY:convertsecretKey cipher.init(Cipher.ENCRYPT_MODE, convertsecretKey); //doFinal(input); input即使要被加密的内容 byte[] result = cipher.doFinal(src.getBytes()); System.out.println("bc des encrypt:"+Hex.encodeHexString(result)); //解密 //cipher.init(opmode, certificate); 第一个参数为模式 第二个参数为转换后的KEY // Cipher.ENCRYPT_MODE解密模式 转换后的KEY:convertsecretKey cipher.init(Cipher.DECRYPT_MODE, convertsecretKey); result = cipher.doFinal(result); System.out.println("bc des decrypt:"+new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-971951.html

    最新回复(0)