天天看点

密码学之常见加密方式(01)常见加密方式

常见加密方式

密码学之常见加密方式(01)常见加密方式

前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、对称加密

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

示例

我们现在有一个原文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,已经被多方分析且广为全世界所使用。

特点

1.加密速度快, 可以加密大文件

2.密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露

3.加密后编码表找不到对应字符, 出现乱码

4.一般结合Base64使用

二、DES加密

示例代码 des加密算法

Cipher :文档

https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html#getInstance-java.lang.String

代码如下(示例):

package com.atguigu.desaes;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

/**
 * @author JsonHao😋
 * @date 2020年9月11日 下午8:58:47
 */
public class DesAesDemo {
    public static void main(String[] args) throws Exception{
        // 原文
        String input = "硅谷";
        // des加密必须是8位
        String key = "123456";
        // 算法
        String algorithm = "DES";

        String transformation = "DES";
        // Cipher:密码,获取加密对象
        // transformation:参数表示使用什么类型加密
        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());
        // 打印字节,因为ascii码有负数,解析不出来,所以乱码
//        for (byte b : bytes) {
//            System.out.println(b);
//        }
        // 打印密文
        System.out.println(new String(bytes));
    }
}


      
密码学之常见加密方式(01)常见加密方式

密钥是6个字节,DES加密算法规定,密钥key必须是8个字节,所以需要修改上面key,改成key=“12345678”

修改 密钥 key = “12345678” ,再次运行 ,出现乱码是因为对应的字节出现负数,但负数,没有出现在 ascii 码表里面,所以出现乱码,需要配合base64进行转码

密码学之常见加密方式(01)常见加密方式

使用 base64 进行编码

base64导包的时候,需要注意 ,别导错了,需要导入 apache 包

密码学之常见加密方式(01)常见加密方式
密码学之常见加密方式(01)常见加密方式

运行程序

密码学之常见加密方式(01)常见加密方式