当前位置: 首页 > news >正文

JAVA加密类的使用

为什么80%的码农都做不了架构师?>>>   hot3.png

 

解决在Eclipse中找不到BASE64Decoder类的方法:

 

 

 

 

加密在计算机中实际就是使用特定的算法和规则对数据进行变换,使其失去原有的特性,,从而达到隐藏数据的特性。

加密有单向与双向加密之分。

双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而单向加密只是对信息进行了摘要计算,不能通过算法生成明文。

在常见的加密算法中, BASE64的加密解密是双向的,可以求反解。  MD5、SHA以及HMAC是单向加密,任何数据加密后只会产生唯一的一个加密串,通常用来校验数据在传输过程中是否被修改。其中HMAC算法有一个密钥,增强了数据传输过程中的安全性,强化了算法外的不可控因素。

下面是各种代码示例:

/** 
 * BASE64解密 
 *  
 * @param key 
 * @return 
 * @throws Exception 
 */  
public static byte[] decryptBASE64(String key) throws Exception {  
    return (new BASE64Decoder()).decodeBuffer(key);  
}  
  
/** 
 * BASE64加密 
 *  
 * @param key 
 * @return 
 * @throws Exception 
 */  
public static String encryptBASE64(byte[] key) throws Exception {  
    return (new BASE64Encoder()).encodeBuffer(key);  
}  

 

 

/** 
 * MD5加密 
 *  
 * @param data 
 * @return 
 * @throws Exception 
 */  
public static byte[] encryptMD5(byte[] data) throws Exception {  
  
    MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);  
    md5.update(data);  
  
    return md5.digest();  
  
}  

 

 

/** 
     * SHA加密 
     *  
     * @param data 
     * @return 
     * @throws Exception 
     */  
    public static byte[] encryptSHA(byte[] data) throws Exception {  
  
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);  
        sha.update(data);  
  
        return sha.digest();  
  
    }  
}  

 

 

/** 
 * 初始化HMAC密钥 
 *  
 * @return 
 * @throws Exception 
 */  
public static String initMacKey() throws Exception {  
    KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);  
  
    SecretKey secretKey = keyGenerator.generateKey();  
    return encryptBASE64(secretKey.getEncoded());  
}  
  
/** 
 * HMAC加密 
 *  
 * @param data 
 * @param key 
 * @return 
 * @throws Exception 
 */  
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {  
  
    SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);  
    Mac mac = Mac.getInstance(secretKey.getAlgorithm());  
    mac.init(secretKey);  
  
    return mac.doFinal(data);  
  
}  

 

 

加密中用到的包:

import java.security.MessageDigest;  
  
import javax.crypto.KeyGenerator;  
import javax.crypto.Mac;  
import javax.crypto.SecretKey;  
  
import sun.misc.BASE64Decoder;  
import sun.misc.BASE64Encoder;  

 

转载于:https://my.oschina.net/qkmc/blog/856679

相关文章:

  • javascript数组去重复
  • Java中Collections的frequency方法
  • ng之ng-app指令
  • 使用命令wsimport构建WebService客户端
  • 【14点正式开始】技术与架构,解析如何将大数据最快落地到实践
  • Apache2.2和Apache2.4中httpd.conf配置文件 权限的异同
  • 分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
  • flask, SQLAlchemy, sqlite3 实现 RESTful API 的 todo list, 同时支持form操作
  • windows下npm默认的全局路径
  • 113期:电子书《阿里巴巴技术实战2016年刊》重磅发布,免费下载!
  • 硬币翻转问题,区间操作
  • java设计模式之建造者模式
  • jQuery-切换事件2
  • centos7 下进行数据库自动备份
  • sharepoint 一个farm中部署多个sql
  • CAP理论的例子讲解
  • Cookie 在前端中的实践
  • JWT究竟是什么呢?
  • XForms - 更强大的Form
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 浅谈Golang中select的用法
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小程序开发之路(一)
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 最近的计划
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​iOS安全加固方法及实现
  • !!java web学习笔记(一到五)
  • #if 1...#endif
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Neo4j下载安装以及初次使用
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)关于pipe()的详细解析
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET MVC 验证码
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET是什么
  • [《百万宝贝》观后]To be or not to be?
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [Angular] 笔记 21:@ViewChild
  • [Codeforces] number theory (R1600) Part.11
  • [hdu 4552] 怪盗基德的挑战书
  • [hive] posexplode函数
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [jobdu]不用加减乘除做加法
  • [JS入门到进阶] 哎,被vite小坑了一波,大家记得配置build.cssTarget为‘chrome61‘