1. 对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

示例:
我们现在有一个原文3要发送给B
设置密钥为108, 3 * 108 = 324, 将324作为密文发送给B
B拿到密文324后, 使用324/108 = 3 得到原文
常见加密算法
DES: Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
AES: Advanced Encryption Standard, 高级加密标准 .在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

特点:
加密速度快, 可以加密大文件
密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露
加密后编码表找不到对应字符, 出现乱码
一般结合Base64使用

2. DES加密解密+Base64编码

Base64算法:
Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一
可读性编码算法不是为了保护数据的安全性,而是为了可读性
可读性编码不改变信息内容,只改变信息内容的表现形式
所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”
Base58是Bitcoin(比特币)中使用的一种编码方式,主要用于产生Bitcoin的钱包地址
相比Base64,Base58不使用数字“0”,字母大写“O”,字母大写“I”,和字母小写“i”,以及“+”和“/”符号

package com.hor.desaes;import com.sun.org.apache.xml.internal.security.utils.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;/*** @author: Horton Wei* @date: 2020/4/16*/
public class DesDemo2 {public static void main(String[] args) throws Exception{// 原文String input = "硅谷11";// des加密必须是8位String key = "12345678";// 算法String algorithm = "DES";// transformation:参数表示使用什么类型加密String transformation = "DES";String encryptDES = encryptDES(input, key, transformation, algorithm);System.out.println(encryptDES);String decryptDES = decryptDES(encryptDES, key, transformation, algorithm);System.out.println(decryptDES);}public static String encryptDES(String input, String key, String transformation, String algorithm) throws Exception {// Cipher:密码,获取加密对象Cipher cipher = Cipher.getInstance(transformation);// 指定秘钥规则// 第一个参数表示:密钥,key的字节数组// 第二个参数表示:算法SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);// 对加密进行初始化// 第一个参数:表示模式,有加密模式和解密模式// 第二个参数:表示秘钥规则cipher.init(Cipher.ENCRYPT_MODE,sks);// 加密byte[] bytes = cipher.doFinal(input.getBytes());// 输出加密后的数据String encode = Base64.encode(bytes);return encode;}public static String decryptDES(String input, String key, String transformation, String algorithm) throws Exception {// 1,获取Cipher对象Cipher cipher = Cipher.getInstance(transformation);// 指定密钥规则SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);cipher.init(Cipher.DECRYPT_MODE, sks);// 3. 解密,上面使用的base64编码,下面直接用密文byte[] bytes = cipher.doFinal(Base64.decode(input));//  因为是明文,所以直接返回return new String(bytes);}
}


2. AES加密解密+Base64编码

package com.hor.desaes;import com.sun.org.apache.xml.internal.security.utils.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;/*** @author: Horton Wei* @date: 2020/4/16*/
public class AesDemo2 {public static void main(String[] args) throws Exception {String input = "硅谷";// AES加密算法,比较高级,所以key的大小必须是16个字节String key = "1234567812345678";String transformation = "AES"; // 9PQXVUIhaaQ=String algorithm = "AES";// 先测试加密,然后在测试解密String encryptDES = encryptDES(input, key, transformation, algorithm);System.out.println("加密:" + encryptDES);String s = dncryptDES(encryptDES, key, transformation, algorithm);System.out.println("解密:" + s);}/*** 使用AES加密数据*/private static String encryptDES(String input, String key, String transformation, String algorithm) throws Exception {Cipher cipher = Cipher.getInstance(transformation);SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);// ENCRYPT_MODE:加密模式// DECRYPT_MODE: 解密模式// 初始化加密模式和算法cipher.init(Cipher.ENCRYPT_MODE, sks);// 加密byte[] bytes = cipher.doFinal(input.getBytes());// 输出加密后的数据String encode = Base64.encode(bytes);return encode;}/*** 使用AES解密*/private static String dncryptDES(String input, String key, String transformation, String algorithm) throws Exception {Cipher cipher = Cipher.getInstance(transformation);SecretKeySpec sks = new SecretKeySpec(key.getBytes(), algorithm);cipher.init(Cipher.DECRYPT_MODE, sks);// 3. 解密byte[] bytes = cipher.doFinal(Base64.decode(input));return new String(bytes);}
}

常见加密方式DES、AES相关推荐

  1. 密码学之常见加密方式(05)

    常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...

  2. Python与常见加密方式

    Python与常见加密方式 前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对 ...

  3. 最常见加密方式和Python实现

    前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将 ...

  4. Python常见加密方式总结和实现

    一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...

  5. python常见加密方式总结踩坑小贴士

    本文是向大家介绍python中常见的一些加密方式,在使用python的时候遇到数据加密的情况时,可以根据实际场景来选择加密的方式对数据进行加密,加强数据传输的安全性. 一.前言 日常工作中经常会看到各 ...

  6. 常见加密方式及openssl的使用

    一.密码学 加密是一种存储和传输数据的的方法.通过编码为不可读的形式来保护信息的科学手段.也是保护敏感信息的有效方法. 密码分析学是一种研究和破解加密过程.破坏身份验证方案以及对算法和秘钥进行逆向工程 ...

  7. Python 常见加密方式和实现

    一.前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. ...

  8. 密码的常见加密方式,你都了解多少?

    文章目录 常见的8种加密方式 ①直接明文保存 ②使用对称加密算法来保存 ③使用MD5.SHA1等单向HASH算法保护密码 ④特殊的单向HASH算法 ⑤PBKDF2 ⑥BCrypt ⑦SCrypt ⑧A ...

  9. 【计算机网络】常见加密方式

    写在前面 这周了解了https是如何实现安全传输的,其中涉及到了s加密的技术.所以,博主去又去学习了常见的加密方式,故写下这篇博客 一. 对称加密 1.介绍 这个比较好理解,也就是说加密和解密使用的是 ...

最新文章

  1. 【调侃】IOC前世今生
  2. spring集成 JedisCluster 连接 redis3.0 集群
  3. springboot-自动配置流程
  4. Numpy的使用(2)
  5. java并发编程(10)-- 线程池 底层原理
  6. django1.2中将ManyToManyField呈现为checkbox
  7. maven项目关于ojdbc14依赖配置
  8. uc/os-II的内存改进与实现TLSF算法的详解,移植实现(三)
  9. 局域网计算机共享文件夹点不开,局域网共享文件夹打不开的解决方法
  10. 制作zencart模板的几个步骤
  11. 树莓派如何重新装Linux系统,如何给树莓派Raspberry重新安装修复操作系统
  12. 1. Pycharm新建项目
  13. Unity学习笔记1 简易2D横版RPG游戏制作(一)
  14. 『TensorFlow』模型载入方法汇总
  15. locate用主动还是被动_女生在两性关系中,究竟是主动一点好,还是被动一点好?...
  16. 同时查询多个快递单号物流最简单实用的方法
  17. python中self image_Python3用tkinter和PIL实现看图工具
  18. 清华大学孙茂松当选 2022 年度 ACL Fellow
  19. moon服务器 zerotier_Zerotier_MOON配置
  20. cmake创建codeblocks项目

热门文章

  1. docker启动容器服务之后访问失败
  2. 美国俚语(11-15)
  3. 【大数据HBase系列】 HBase面试题整理
  4. 【Linux】【Vim操作指南2】| vim分屏快捷操作
  5. Android 10实现全局静音
  6. 极客日报第 33 期:美团回应“大数据杀熟”;Docker开发者预览版支持M1芯片
  7. 什么是 rektguy NFT系列?
  8. python中字符串函数的用法_python中字符串内置函数的用法总结
  9. 2021甘肃省安全员考试题库及答案甘肃三类人员题库安全员
  10. python小游戏 拼图小游戏设计与实现