国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

DES、3DES、AES、PBE对称加密算法实现及应用

发布时间:2019/08/02标签:   密钥    点击量:

原标题:DES、3DES、AES、PBE对称加密算法实现及应用
1.对称加密算法概述对称加密算法是利用较早的加密算法,技巧成熟。在对称加密算法中,数据发信方将明文和加密密钥一同经由特别加密算法处置后,使其酿成庞杂的加密密文发送进来。收信方收到密文后,若想解读原文,则须要应用加密用过的密钥及雷同算法的逆算法对密文停止解密,才干使其规复成可读明文。在对称加密算法中,应用的密钥只要一个,发收信两边都应用这个密钥对数据停止加密息争密,这就请求解密方当时必需晓得加密密钥。对称加密算法的特色是算法公然、盘算量小、加密速率快、加密效力高。缺乏之处是,买卖两边都应用一样钥匙,保险性得不到保障。在盘算机体系中普遍应用的对称加密算法有DES和IDEA等。由于DES比年来每每被破解,以是,美国国度尺度局提倡的AES马上作为新尺度代替DES。2.对称加密算法-DESDES算法为暗码体系中的对称暗码体系,又被称为美国数据加密尺度,是1972年美国IBM公司研制的对称暗码体系加密算法。明文按64位停止分组,密钥长64位,密钥现实上是56位参加DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替换或交流的方式构成密文组的加密方式。引入Bouncy Castle依靠:<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15</artifactId><version>1.46</version></dependency>引入Commons Codec依靠:<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency>Java代码完成:importjava.security.Key;importjava.security.Security;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;importorg.apache.commons.codec.binary.Hex;importorg.bouncycastle.jce.provider.BouncyCastleProvider;publicclassDES{publicstaticfinalStringsrc="destest";publicstaticvoidmain(String[]args){jdkDES();bcDES();}//用jdk完成:publicstaticvoidjdkDES(){try{//天生KEYKeyGeneratorkeyGenerator=KeyGenerator.getInstance("DES");keyGenerator.init(56);//发生密钥SecretKeysecretKey=keyGenerator.generateKey();//猎取密钥byte[]bytesKey=secretKey.getEncoded();//KEY转换DESKeySpecdesKeySpec=newDESKeySpec(bytesKey);SecretKeyFactoryfactory=SecretKeyFactory.getInstance("DES");KeyconvertSecretKey=factory.generateSecret(desKeySpec);//加密Ciphercipher=Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,convertSecretKey);byte[]result=cipher.doFinal(src.getBytes());System.out.println("jdkdesencrypt:"+Hex.encodeHexString(result));//解密cipher.init(Cipher.DECRYPT_MODE,convertSecretKey);result=cipher.doFinal(result);System.out.println("jdkdesdecrypt:"+newString(result));}catch(Exceptione){e.printStackTrace();}}//用bouncycastle完成:publicstaticvoidbcDES(){try{Security.addProvider(newBouncyCastleProvider());//天生KEYKeyGeneratorkeyGenerator=KeyGenerator.getInstance("DES","BC");keyGenerator.getProvider();keyGenerator.init(56);//发生密钥SecretKeysecretKey=keyGenerator.generateKey();//猎取密钥byte[]bytesKey=secretKey.getEncoded();//KEY转换DESKeySpecdesKeySpec=newDESKeySpec(bytesKey);SecretKeyFactoryfactory=SecretKeyFactory.getInstance("DES");KeyconvertSecretKey=factory.generateSecret(desKeySpec);//加密Ciphercipher=Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,convertSecretKey);byte[]result=cipher.doFinal(src.getBytes());System.out.println("bcdesencrypt:"+Hex.encodeHexString(result));//解密cipher.init(Cipher.DECRYPT_MODE,convertSecretKey);result=cipher.doFinal(result);System.out.println("bcdesdecrypt:"+newString(result));}catch(Exceptione){e.printStackTrace();}}}

版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号