java项目中的加密
来源:互联网 发布:青岛永诚网络 编辑:程序博客网 时间:2024/06/10 08:36
背景
加密原理很难,开发倒不难,面试也问经常被问到,然后我就一脸懵逼的看着面试官,我不清楚,不知道,没用过。哎,说多了都是泪。
开发其实就是那么几个工具类。
AES和RSA都是加密算法
AES属于对称加密算法
RSA属于非对称加密算法,公钥和私钥不一致
MD5
对于暴露在互联网上的,RSA最给力啦。
RSA需要维护两个密钥,公钥和私钥,两个是一对。
开发步骤
最简单的开始,MD5
/** * MD5加密 */ public static String MD5(String source){ Hasher hasher = Hashing.md5().newHasher(); hasher.putString(source, Charsets.UTF_8); return hasher.hash().toString().toUpperCase(); }String uuid =UUID.randomUUID().toString();用户密码,可以uuid+pwd 然后MD5加密,uuid专业就叫加密盐。防暴力破解的嘛。
AES加密
AES只有一个密钥,加密解密都是他了。一般大家都是代码里写死的,
KeyGenerator kg = KeyGenerator.getInstance( " AES " ); // 获取密匙生成器 kg.init( 256 ); // 初始化 // DES算法必须是56位 // DESede算法可以是112位或168位 // AES算法可以是128、192、256位 SecretKey key = kg.generateKey(); // 生成密匙,可用多种方法来保存密匙 加密: Cipher cp = Cipher.getInstance( " AES " ); // 创建密码器 cp.init(Cipher.ENCRYPT_MODE, key); // 初始化 String str = " 我是需要被加密的明文 " ; byte [] ptext = str.getBytes( " UTF8 " ); byte [] ctext = cp.doFinal(ptext); // 加密 //可用多种方式保存 解密: Cipher cp = Cipher.getInstance( " AES " ); // 创建密码器 cp.init(Cipher.DECRYPT_MODE, key); // 初始化 byte [] ptext = cp.doFinal(ctext); // 解密 String str = new String(ptext, " UTF8 " ); // 重新显示明文
RSA加密
这个加密等级最高,有两把钥匙,当然钥匙多了,开门速度就慢些了。安全和速度本来就矛盾。
这么宝贵的代码我就贴几句,剩下的靠自己去研究了
加密 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(encodedKey); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey);解密X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(encodedKey); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, publicKey);
阅读全文
0 0
- java项目中的加密
- java中的加密
- java中的MD5加密
- Java中的MD5加密
- java 加密中的注意事项
- java中的加密!
- java中的加密!
- java中的加密解密
- java中的md5加密
- java中的MD5加密
- java项目加密,使用Proguard进行项目混淆加密
- java 中的 加密
- java中的MD5加密函数
- Java中的加密与解密
- Java/Android中的DES加密
- Java中的简单MD5加密
- 加密Web项目中配置文件中的密码
- 加密Web项目中配置文件中的密码
- opencv的mat操作
- 旋转矩阵、欧拉角、四元数理论及其转换关系
- python装饰器
- 【Bugku】这是一张单纯的图片?? 【writeup】
- Android强制用户重新登录处理
- java项目中的加密
- centos7 hadoop 配置ssh
- 通信方式--信号量的操作
- typedef float V __attribute__((vector_size(16)));的含义
- ssh框架搭建(注解)
- crontab和anacron和logrotate的关系详解
- HDU 1159 Common Subsequence (LCS)
- Zabbix 系列博客教程目录
- Android的事件传递机制