教学服务系统

 找回密码
 立即注册
搜索
查看: 617|回复: 1

信息计算2019级2班8号张黎曦

[复制链接]

9

主题

19

帖子

89

积分

注册会员

Rank: 2

积分
89
发表于 2022-4-5 15:44:52 | 显示全部楼层 |阅读模式
mooc截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

9

主题

19

帖子

89

积分

注册会员

Rank: 2

积分
89
 楼主| 发表于 2022-4-5 20:15:22 | 显示全部楼层
本帖最后由 张黎曦 于 2022-4-5 20:53 编辑

package mimaxue;


import java.io.IOException;
import java.security.SecureRandom;
import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;



import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Base64.Decoder;


public class AesCryptTest {  
    public final String KEY_ALGORITHM = "AES";  
    public final String CIPHER_ALGORITHM_CBC = "AES/CBC/PKCS5Padding";  
    public SecretKey secretKey;  
    public Cipher cipher;  

    public static void main(String[] args) throws Exception {  
        AesCryptTest act = new AesCryptTest();  
        String originString = "拒绝摆烂,从我做起!";  

        // 加密数据  
        System.out.println("加密数据: " + originString);  
        String enString = act.encode(originString);  

        // 解密数据  
        String deString = act.decode(enString);  
        System.out.println("解密结果: " + deString);  
    }  

    public String encode(String oriStr) throws Exception {   
        KeyGenerator kgen = KeyGenerator.getInstance(KEY_ALGORITHM);  
        SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");  
        secureRandom.setSeed(getIV());  
        // 根据密钥初始化密钥生成器  
        kgen.init(128, secureRandom);  
        secretKey = kgen.generateKey();  

        cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);  
        cipher.init(Cipher.ENCRYPT_MODE, secretKey,  
                new IvParameterSpec(getIV()));// 使用*加密*模式初始化 密钥  

        // 加密数据  
        byte[] encByte = cipher.doFinal(oriStr.getBytes());   
        // 编码,将由逗号、数字组成的字节数组转化为不易辨别的字符串  
        Encoder enc = Base64.getEncoder();
        String encStr = enc.encodeToString(encByte);  

        System.out.println("加密后数组(编码后) : " + encStr);  
        return encStr;  
    }  

    public String decode(String encStr) throws Exception {  
            Base64.Decoder dec =Base64.getDecoder();  
        byte[] encByteArr = null;  
        encByteArr = dec.decode(encStr);  

        KeyGenerator kgen = KeyGenerator.getInstance(KEY_ALGORITHM);
        SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");  
        secureRandom.setSeed(getIV());  

        kgen.init(128, secureRandom);  
        secretKey = kgen.generateKey();

        cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);  
        cipher.init(Cipher.DECRYPT_MODE, secretKey,  
                new IvParameterSpec(getIV()));// 使用*解密*模式初始化 密钥  

        // 解密数据  
        byte[] decByte = cipher.doFinal(encByteArr);  
        System.out.println("解密后数组 : " + Arrays.toString(decByte));  

        return new String(decByte);  
    }  

    static byte[] getIV() {  
        String iv = "0123456789abcdef";
        return iv.getBytes();  
    }  

}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

教学服务系统

GMT+8, 2025-5-6 10:28 , Processed in 0.013671 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表