今天進行了mes系統的開發的學習,瞭解了mes系統開發的主要步驟,要明確目標,弄清楚需求分析報告的要求,並且設定對應的資料庫,並且瞭解瞭如何繪製上下文圖。
下午完成軟體設計實驗以下為實驗內容
實驗3:工廠方法模式
本次實驗屬於模仿型實驗,透過本次實驗學生將掌握以下內容:
1、理解工廠方法模式的動機,掌握該模式的結構;
2、能夠利用工廠方法模式解決實際問題。
[實驗任務一]:加密演算法
目前常用的加密演算法有DES(Data Encryption Standard)和IDEA(International Data Encryption Algorithm)國際資料加密演算法等,請用工廠方法實現加密演算法系統。
實驗要求:
1. 畫出對應的類圖;
2.提交該系統的程式碼,該系統務必是一個可以能夠直接使用的系統,查閱資料完成相應加密演算法的實現;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
public class DESEncryption {
// 生成DES金鑰
public static SecretKey generateKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
keyGenerator.init(56, SecureRandom.getInstanceStrong());
return keyGenerator.generateKey();
}
// DES加密
public static String encrypt(String data, SecretKey key) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal(data.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encryptedData);
}
// DES解密
public static String decrypt(String encryptedData, SecretKey key) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] data = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
return new String(data);
}
public static void main(String[] args) {
try {
// 生成金鑰
SecretKey key = generateKey();
String originalText = "Hello, World!";
// 加密
String encryptedText = encrypt(originalText, key);
System.out.println("Encrypted Text: " + encryptedText);
// 解密
String decryptedText = decrypt(encryptedText, key);
System.out.println("Decrypted Text: " + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}