一、常用的加密/解密算法

1.Base64

严格来说,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中。

常用场景:对文件、URL等进行Base64编码,以字符串方式发送给对方;对方在进行解码。

2.AES

AES是目前用的比较广泛的一种加密/解密算法。先来一段代码

public class AESUtil {

@Value("${aes.key}")

String key;

byte[] iv = { 0x31, 0x35, 0x36, 0x33, 0x34, 0x33, 0x32, 0x31, 0x37, 0x37, 0x39, 0x35, 0x34, 0x33, 0x30, 0x31 };

public String encrypt(String content) {

try {

Security.addProvider(new BouncyCastleProvider());

Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");

Cipher in = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");//算法/模式/补码方式

in.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,需要一个向量iv,可增加加密算法的强度

byte[] enc = in.doFinal(content.getBytes());

return new String(Hex.encode(enc));

} catch (Exception e) {

log.error("加密遇到异常",e);

throw new RuntimeException(e);

}

}

public String decrypt(String encryptContent){

try {

Security.addProvider(new BouncyCastleProvider());

Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");

byte[] enc = Hex.decode(encryptContent.getBytes());

Cipher out = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");//算法/模式/补码方式

out.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,需要一个向量iv,可增加加密算法的强度

byte[] dec = out.doFinal(enc);

return new String(dec);

}catch (Exception e){

log.error("解密遇到异常",e);

throw new RuntimeException(e);

}

}

}

由上面的代码可知,加密所需要的参数有:content(需要被加密的字符串)、key(加密需要的密码)。

key是自己设置的,所以对content加密后,如果不知道key的话,很难解密出来。

java变短加密解密算法_java----加密/解密常用算法相关推荐

  1. java 常用算法_Java基础之常用算法

    1:冒泡排序: 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处.同理,其他的元素就可以排好. public static void bubbleSort(int[] arr) { ...

  2. 算法设计之五大常用算法设计方法总结

    算法设计之五大常用算法设计方法总结 一.[分治法] 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再 ...

  3. java加密解密代码_java加解密文件公用方法整合(多看一本书,少写三行代码)

    最近接到任务(文件的安全性)需要在文件上传到服务器上时将文件加密保存, 用户下载时将文件解密后返回给用户.翻了下方法最后决定用java中的Cipher类来完成(里面的实现方式挺全的). 上手实现.po ...

  4. java 加密解密 工具包_java加密解密工具类

    packagecom.founder.mrp.util;importjava.nio.charset.StandardCharsets;importjava.security.Key;importja ...

  5. java sha加解密算法_java加解密

    SHA256 ------------------java自带实现方式--------------- package com.xiayu.demo; import java.io.Unsupporte ...

  6. java实现微信、手机号登陆_Java后端解密微信小程序手机号数据

    小程序端登录后,得到登录时获取的 code(仅可使用一次) App({ onLaunch: function () {//登录 wx.login({ success: res=>{//发送 re ...

  7. java实现红包要多少钱_JAVA实现简单抢红包算法(模拟真实抢红包)

    闲来无事,最近项目需求要写出用户登录首页来发现金红包,没有限额.我就自己稍微计算了一下如果有限额该怎么写.觉得这样与微信红包差不多.等项目需求完成以后.正好来博客贴一下我自己写的拆红包算法.个人觉得这 ...

  8. Java设置短信间隔时间_Java实现短信验证码--设置发送间隔时间,以及有效时间(Java+Redis)...

    标签:url   control   operation   短信验证码   reg   cep   ppi   任务   用户 Java实现短信验证码--设置发送间隔时间,以及有效时间(Java+R ...

  9. 密码算法的概念及常用算法整理

    最近实在太忙,很早就整理好的东西,但是一直抽不出时间发,今天准备连续发三篇最近对密码这块内容的整理,我也是密码学的初学者,解释不到的地方欢迎指点,谢谢!接下来开始学习密码算法吧! 1.密码算法概念介绍 ...

  10. 常用计算机算法,计算机中的常用算法

    奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)做了一个调查,投票选出32个最重要的算法: 1.A* 搜索算法--图形搜索算 ...

最新文章

  1. mark一下总是记混的重定向与转发的区别
  2. CVPR 2020:如何写一篇好论文?
  3. oracle 加载数据戽_走进大数据丨 ETL - Load(数据加载)
  4. 用PMML实现机器学习模型的跨平台上线
  5. Service Request Account field in CRM and C4C
  6. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
  7. 不同曲线设置标签_带动态标签的面积曲线图
  8. jpadao层继承什么_实木复合地板特点是什么
  9. Java编程:排序算法
  10. linux安装pyodbc模块,Linux下安装pyodbc报错 error: command 'gcc' failed with exit status 1
  11. 5G NGC — 关键技术 — 网络切片 — 网络切片管理器网元
  12. 计算机应用技术 自然语言处理,基于词联接的自然语言处理技术及其应用研究-计算机应用技术专业论文.docx...
  13. 实现智能语音识别服务
  14. Python基础之基本结构
  15. 33幅精美的拿铁图案摄影作品欣赏
  16. 「AI Timer 说」一人独享不如众人分享!
  17. 李宏毅机器学习2022 HW1
  18. 交易市场中的测不准原理
  19. 汇编中的通用基础寄存器ax,bx,cx,dx等的含意及作用解释
  20. 《Mysql是怎样运行的》读书笔记四

热门文章

  1. Spring中两种编程式事务管理
  2. Qt [GC9-14]:HUD-定速巡航、自适应巡航、车道偏离、车距保持
  3. NLP论文研读 Task1 ELMO
  4. 大数据学习——常用的数据分析法和模型
  5. matlab/simulink中代数环的问题及解决措施
  6. 阿龙的学习笔记---如何用C++ STL 实现一个 LRU缓存
  7. 汇编语言(王爽第三版)实验一
  8. Linux6.8搭建sftp服务
  9. Oracle Core: Essential Internals for DBAs and Developers
  10. Oracle应用之to_char(参数,'FM990.00')函数