首页
留言
关于
友链
更多
足迹
Search
1
SpringMVC+Spring+MyBatis整合完整版Web实例(附数据)
2,910 阅读
2
关于在Flutter实现Google地图的方法
1,879 阅读
3
druid报异常 “sql injection violation, part alway true condition not allow”的解决方案
1,375 阅读
4
git删除remote
1,336 阅读
5
MyBatis的TooManyResultsException异常的解决办法
1,149 阅读
发现
技术
生活
户外
登录
Search
标签搜索
Git
JavaScript
Flutter
Oracle
Git学习
Java
MySQL
SQL Server
秦岭户外
IntelliJ IDEA
Spring Boot
Flutter 2.0
对称加密算法
Google地图
Maven
ES6
linux
Tomcat
Redis
Spring
Bai Keyang
累计撰写
288
篇文章
累计收到
277
条评论
首页
栏目
发现
技术
生活
户外
页面
留言
关于
友链
足迹
搜索到
4
篇与
对称加密算法
的结果
2017-01-02
对称加密算法 之 PBE 篇
PBE算法 结合了消息摘要算法 和 对称加密算法 的优点PBE(Password Based Encryption) 基于口令加密特点:1、对已有的算法的包装2、有 JDK、BC 等实现方式3、增加盐口令4、PBE是一个综合性的对称加密算法,常用的PBEWithMD5AndDES 等。 算法 密钥长度 默认 工作模式 填充方式 实现 PBEWithMD5AndDES 56 56 CBC PKCS5Padding JDK PBEWithMD5AndTripleDES 112、168 168 PBEWithSHA1AndDESede 112、168 168 PBEWithSHA1AndRC2_40 40~1024(8倍数) 128 算法 密钥长度 默认 工作模式 填充方式 实现 PBEWithMD5AndDES 64 64 CBC PKCS5Padding PKCS7Padding ISO10126Paddiing ZeroBytePadding BC PBEWithMD5AndRC2 112 128 PBEWithSHA1AndDES 64 64 PBEWithSHA1AndRC2 128 128 PBEWithSHAAndIDEA-CBC 128 128 PBEWithSHAAnd2-KeyTripleDES-CBC 128 128 PBEWithSHAAnd3-KeyTripleDES-CBC 192 192 PBEWithSHAAnd128BitRC2-CBC 128 128 PBEWithSHAAnd40BitRC2-CBC 40 40 PBEWithSHAAnd128BitRC4 128 128 PBEWithSHAAnd40BitRC4 40 40 PBEWithSHAAndTwofish-CBC 256 256 以下就JDK提供 的PBE 方式实现的Demo:package com.baikeyang.EncrptionProject; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import org.apache.commons.codec.binary.Base64; public class PBEEncrption { public static void main(String[] args) { jdkPBE(); } static String str = "采用JDK实现对称加密PBE算法"; public static void jdkPBE(){ try { //初始化盐 SecureRandom random = new SecureRandom(); byte[] salt =random.generateSeed(8); // 口令与密钥 String password = "baikeyang.com"; PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray()); SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES"); Key key = factory.generateSecret(pbeKeySpec); // 加密 PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, 100); Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES"); cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec); byte[] result = cipher.doFinal(str.getBytes()); System.out.println(Base64.encodeBase64String(result)); // 解密 cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec); result = cipher.doFinal(result); System.out.println(new String(result)); } catch (Exception e) { e.printStackTrace(); } } } 后记:本次总共给大家分享了4中对称加密算法:DES 3DES AES PBE在实际的加密过程中,加密和解密不再同一方的,一般我们可以把密钥发送给对方进行解密。但是这样不安全。那么我们可以在加密和机密的时候,进行双方约定,这样是比较好的。
2017年01月02日
456 阅读
1 评论
0 点赞
2017-01-02
对称加密算法 之 AES 篇
AES是目前使用最多的对称加密算法。AES是至今尚未被破解的一个算法;AES通常用于移动通信系统加密以及基于SSH协议的软件,比如SSH Client、SecureCRT 等等。它是DES的替代者。 密钥长度 默认 工作模式 填充方式 实现 128、192、256 128 ECB、CBC、PCBC、CTR、CTS、 CFB、CFB8到128、OFB8到128 NoPadding、 PKCS5Padding、 IOS10126Padding JDK(256位密钥需要获得无政策限制权限文件) 同上 同上 同上 PKCS7Padding、 ZeroBytePadding BC 以下就JDK提供 的AES 方式实现的Demo:package com.baikeyang.EncrptionProject; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; public class AESEncrption { public static void main(String[] args) { jdkAES(); } static String str = "采用JDK实现对称加密AES算法"; public static void jdkAES(){ try { // 生成Key KeyGenerator generator = KeyGenerator.getInstance("AES"); generator.init(128); SecretKey secretKey = generator.generateKey(); byte[] byteskey = secretKey.getEncoded(); // key的转换 Key key = new SecretKeySpec(byteskey, "AES"); // 加密 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] result = cipher.doFinal(str.getBytes()); System.out.println(Base64.encodeBase64String(result)); // 解密 cipher.init(Cipher.DECRYPT_MODE, key); result = cipher.doFinal(result); System.out.println(new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
2017年01月02日
321 阅读
0 评论
0 点赞
2016-12-29
对称加密算法 之 3DES 篇
前面也介绍了关于对称加密的DES算法。因为 安全问题、违反了柯克霍夫原则 等问题,3重DES应运而生。3重DES应用比DES广泛很多。相对DES,3重DES的好处:1、密钥程度增强2、迭代次数提高对称加密算法-3重DES3DES(Triple DES 或 DESede) 密钥长度 默认 工作模式 填充方式 实现方式 112、168 168 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8到128、OFB、OFB8到128 NoPdding、PKCS5Padding、ISO10126Padding JDK 128、192 168 同上 PKCS7Padding、ISO10126d2Padding、X932Padding、ISO7816d4Padding、ZeroBytePadding BC 以下就JDK提供的3重DES方式实现的Demo:package com.baikeyang; import org.apache.commons.codec.binary.Hex; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import java.security.Key; import java.security.SecureRandom; import java.security.Security; /** * Created by lenovo on 2016/12/28. */ public class ThreeDESEncryption { public static void main (String[] args) { // 3重DES jdk3DES(); } static String str = "你好,中国"; private static void jdk3DES() { try { // 生成KEY KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); //keyGenerator.init(168); keyGenerator.init(new SecureRandom()); 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"); cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey); byte[] result = cipher.doFinal(str.getBytes()); System.out.println("JDK des encrypt " + new String(Hex.encodeHex(result))); // 解密 cipher.init(Cipher.DECRYPT_MODE, convertSecretKey); result = cipher.doFinal(result); System.out.println("JDK des decrypt " + new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
2016年12月29日
308 阅读
0 评论
0 点赞
2016-12-28
对称加密算法 之 DES 篇
近期在开发的过程中,了解了下关于加密的一些知识。知道了有 对称加密、非对称加密 等。在这里给大家要分享的是对称加密,对称加密 指加密和解密使用相同密钥的加密算法。具体关于对称加密算法的解释有兴趣的可以去网络上搜索了解,在这里就不过多的做介绍了。 对称加密 具体主要有 DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。 今天就先 给大家分享下对称加密算法中的DES算法。对称加密算法-DESDES(Data Encryption Standard) 数据加密标准 密钥长度 默认 工作模式 填充方式 实现方式 56 56 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8到128、OFB、OFB8到128 NoPdding、PKCS5Padding、ISO10126Padding JDK 64 64 同上 PKCS7Padding、ISO10126d2Padding、X932Padding、ISO7816d4Padding、ZeroBytePadding BC 以下就JDK提供的DES方式实现的Demo:package com.baikeyang; import org.apache.commons.codec.binary.Hex; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.Key; public class DESEncryption { public static void main (String[] args) { jdkDES(); } static String str = "你好,中国"; // JDK DES private static void jdkDES(){ try { // 生成KEY KeyGenerator keyGenerator = KeyGenerator.getInstance("DES"); keyGenerator.init(56); 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"); cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey); byte[] result = cipher.doFinal(str.getBytes()); System.out.println("JDK des encrypt " + new String(Hex.encodeHex(result))); // 解密 cipher.init(Cipher.DECRYPT_MODE, convertSecretKey); result = cipher.doFinal(result); System.out.println("JDK des decrypt " + new String(result)); } catch (Exception e) { e.printStackTrace(); } } }
2016年12月28日
301 阅读
0 评论
0 点赞