加密, 解密

凯撒密码

左右位移

向右位移三位

a-> d

b -> e

c -> f

凯撒密码--频度分析法

例如:在英文中 e 出现的频率是最高的

将出现最多的字母付给e,总结规律,并推广到全文,再根据合理性确认

对称加密

加密和解密用的都是同一密钥。

如: IBM 的 DES加密

UTF-8是一种变长的编码方式,英文1个字节,中文三个字节

将原文的二进制文件按照64位一段进行反复加密,替换掉原文

package crypt;

import javax.crypto.*;

import javax.crypto.spec.DESKeySpec;

import java.io.UnsupportedEncodingException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.spec.InvalidKeySpecException;

import java.security.spec.KeySpec;

import java.util.Base64;

/**

* @author:liupengfei

* @createTime: 2019/12/30 2:36 下午

* @discription:

* @package: crypt

* @project: test

**/

public class EnCryptInfo {

///长度大于等于8

private static final String KEY = "12345678944";

//密钥算法 DES/AES

private static final String KEY_ALGORITHM = "DES";

//转换模式 如果简写为DES ,即为默认"DES/ECB/PKCS5Padding"

//第一个:算法 algorithm DES/AES

//第二个:工作模式 mode ECB/CBC ECB固定64编译成固定代码,并行,CBC前面代码块会影响后面64位编码

//第三个:填充模式 padding 填充方式 不填充NoPadding,填充PKCS5Padding……

private static final String TRANSFORMATION = "DES/ECB/PKCS5Padding";

public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException, UnsupportedEncodingException {

String input = "hello world!";

/**

* 实例话

*/

Cipher cipher = Cipher.getInstance(TRANSFORMATION);

/**

* 生成密钥

* 需要密钥工厂

* 需要密钥规格 方式+秘文

*/

SecretKeyFactory factory = SecretKeyFactory.getInstance(KEY_ALGORITHM);

KeySpec keySpec = new DESKeySpec(KEY.getBytes());

SecretKey key = factory.generateSecret(keySpec);

/**

* 模式 ENCRYPT_MODE = 1; DECRYPT_MODE = 2;

* 密钥

*/

//加密

cipher.init(Cipher.ENCRYPT_MODE, key);

//直接返回加密后字符串后有乱码的危险,导致再转换为字节数组时发生变化,这个时候一般使用Base64加密一下;

byte[] output = Base64.getEncoder().encode(cipher.doFinal(input.getBytes()));

System.out.println("加密:" + new String (output));

//解密

cipher.init(Cipher.DECRYPT_MODE, key);

byte[] orgput = cipher.doFinal(Base64.getDecoder().decode(output));

System.out.println("解密:" + new String(orgput));

}

}

ps:直接返回加密后字符串后有乱码的危险,导致再转换为字节数组时发生变化,这个时候一般使用Base64加密一下;

非对称加密 AES

DES密钥长度8个字符64位,

AES 密钥长度16个字符128位,

3DES 强度类似A ES,加密效率比较差

AES的代码跟DES实现类似,

package crypt;

import javax.crypto.*;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.spec.SecretKeySpec;

import java.io.UnsupportedEncodingException;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.spec.InvalidKeySpecException;

import java.security.spec.KeySpec;

import java.util.Base64;

/**

* @author:liupengfei

* @createTime: 2019/12/30 2:36 下午

* @discription:

* @package: crypt

* @project: test

**/

public class AESEnCrypt {

///长度等于16,即128位

private static final String KEY = "0123456789ABCDEF";

public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException, UnsupportedEncodingException {

String input = "hello world!";

/**

* 实例话

*/

Cipher cipher = Cipher.getInstance("AES");

/**

* 生成密钥

* 需要密钥工厂

* 需要密钥规格 方式+秘文

*/

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

/**

* 模式 ENCRYPT_MODE = 1; DECRYPT_MODE = 2;

* 密钥

*/

//加密

cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

byte[] output = Base64.getEncoder().encode(cipher.doFinal(input.getBytes()));

System.out.println("加密:" + new String (output));

//解密

cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

byte[] orgput = cipher.doFinal(Base64.getDecoder().decode(output));

System.out.println("解密:" + new String(orgput));

}

}

消息摘要

数字签名

数字证书

cipher java 安全_Java安全(未完待续)相关推荐

  1. java opencv4.5 人脸对比_2020大数据Java面试总结(未完待续)

    导读:纪录面试的经过,成功有经验,失败则有教训.目前已找到工作,做Java大数据,月base45k,整理总结,希望对你也有帮助. 自我介绍 公司介绍,近期的三家公司,在线教育独角兽.暴风影音.创维数字 ...

  2. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  3. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

  4. 性能测试调优篇---未完待续

    性能测试调优一: 1.首先,看下选测交易的整个走向 纯系统内部交易: 选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表?? 该交易走了那几台机器,这几台 ...

  5. 使用 Sharding-Jdbc 实现分库分表、读写分离(未完待续)

    先贴代码, 回头讲解.未完待续 规划 实现分库分表.读写分离. 准备两张表:svc_order, svc_order_item 结构如下,可以想象成是未实施分库分表之前的数据库结构: CREATE D ...

  6. Flink1.11 读取kafka数据写入hive,未完待续

    昨天晚上Flink1.11出了,这次改动很多,我只关心hive这一部分. 目前尝试了几个小时用代码读取hive,安装官网的文档,没成功,先蹭个热点,记录下. 先贴一下依赖吧: 注意:反正各种报错,看社 ...

  7. Spring Boot web开发(未完待续)

    addViewController请求 attention: 想要把网站的图标换掉就在static下放一个 favicon.ico 的图标图片即可 Spring MVC 5.0.5官方文档 stati ...

  8. 【第三方框架】Glid4.4 完全学习(未完待续)

    一.添加方法: 导入Glide4.4的依赖: implementation 'com.github.bumptech.glide:glide:4.4.0'annotationProcessor 'co ...

  9. 《今日简史》读书笔记(未完待续)

    <今日简史>读书笔记(未完待续) 这本书是尤瓦尔·赫拉利的简史三部曲的最后一本,前2本书是<未来简史>和<人类简史>.根据豆瓣上网友的评价,这本书是尤瓦尔·赫拉利写 ...

  10. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要

    Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789]命令.文件. [选项参数]: 数字"1"表示用户命令 ...

最新文章

  1. 关于建立完整商业应用软件框架库的设想
  2. MVC,MVP,MVVM设计模式的比较
  3. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  4. python字典赋值方法_python如何给字典的键对应的值为字典项的字典赋值
  5. [POI2011]MET-Meteors 整体二分_树状数组_卡常
  6. PHP中两种包含文件方式、三种注释风格、四种标记风格
  7. salesforce 学习(超简介,以及传送门)
  8. Kubernetes 搭建 Kafka 和 Zookeeper 集群(完整教程)
  9. Java线程池关闭1-shutdown和isTerminated
  10. 力扣题目系列:1370. 上升下降字符串(Python题解)
  11. 在linux上下载图片,在Linux上使用4k Stogram下载Instagram图片库 | MOS86
  12. Magento国家代码缩写
  13. 【Linux】关于Linux中的权限
  14. 量价:2 量价基础扫描
  15. Linux 操作系统的体系结构
  16. 【源码阅读 | 04】update-notifier 检查包更新
  17. Dijkstra算法和Floyd算法超详解以及区别
  18. c中纠结不清的点(1)
  19. word 如何设置页码?分页?分节?
  20. Android中给定一个日期判断是周几.

热门文章

  1. 坦克机器人战斗仿真引擎 Robocode
  2. HTML5+CSS大作业——个人旅游图片博客(7页)
  3. 本科课程:计算机网络(四)
  4. 2022-2023级北京大学光华管理学院MBA招生简章
  5. 保研/考研简历中数模竞赛的经历,就该这样写
  6. 信息系统分析与设计——信息、管理与信息系统
  7. 提取NTLDR文件,分解Osloader.exe;pe文件找e_lfanew、IMAGE_EXPORT_DIRECTORY-AddressOfFunctions
  8. CIO:2013年OA选型六步走(摘)
  9. TIOBE 9 月编程语言排行榜,新 TIOBE 指数算法
  10. 活体识别3:论文笔记之《FACE ANTI-SPOOFING BASED ON COLOR TEXTURE ANALYSIS》