天天看點

密碼學之常見加密方式(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)常見加密方式