반응형
ECB_BMPFileEncryption.java ▼
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.*;
public class EcbMode {
public static void main(String[] args) throws Exception{
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(new SecureRandom());
SecretKey secretKey = kg.generateKey();
FileInputStream inFile = new FileInputStream("c:/simpsons.bmp");
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
FileOutputStream outFile = new FileOutputStream("ECB_simpsons.bmp");
byte[] input = new byte[64];
int bytesRead;
while((bytesRead = inFile.read(input)) != -1){
byte[] output = cipher.update(input,0,bytesRead);
if(output != null)
outFile.write(output);
}
byte[] output = cipher.doFinal();
if(output != null)
outFile.write(output);
inFile.close();
outFile.flush();
outFile.close();
}
}
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES"); //DES알고리즘으로 키 생성 Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); //DES알고리즘, ECB(Electronic Code Block) Mode 암호화 방식, Padding
CBC_BMPFileEncryption.java▼
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.*;
public class CbcMode {
// @param args the command line arguments
public static void main(String[] args) throws Exception{
//TODO code application logic here
//키 발생기 kg 선언 DES형태
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(new SecureRandom());//랜덤값으로 키 초기화
SecretKey secretKey = kg.generateKey();//비밀키 생성
FileInputStream inFile = new FileInputStream("simpsons.bmp");
//현재폴더에서 simpsons.bmp 불러옴
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");//DES알고리즘/ECB모드/패딩함
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
FileOutputStream outFile = new FileOutputStream("CBC_simpsons.bmp");
byte[] input = new byte[64];
int bytesRead;
while((bytesRead = inFile.read(input)) != -1){
byte[] output = cipher.update(input,0,bytesRead);
if(output != null)
outFile.write(output);
}
byte[] output = cipher.doFinal();
if(output != null)
outFile.write(output);
inFile.close();
outFile.flush();
outFile.close();
}
}
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
//DES알고리즘으로 키 생성
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
//DES알고리즘, CBC(Cipher Block Chaining) Mode 암호화 방식, Padding
CTR_BMPFileEncryption.java▼
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.io.*;
public class CtrMode {
// @param args the command line arguments
public static void main(String[] args) throws Exception{
//TODO code application logic here
//키 발생기 kg 선언 DES형태
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(new SecureRandom());//랜덤값으로 키 초기화
SecretKey secretKey = kg.generateKey();//비밀키 생성
FileInputStream inFile = new FileInputStream("simpsons.bmp");
//현재폴더에서 simpsons.bmp 불러옴
Cipher cipher = Cipher.getInstance("DES/CTR/PKCS5Padding");//DES알고리즘/ECB모드/패딩함
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
FileOutputStream outFile = new FileOutputStream("CTR_simpsons.bmp");
byte[] input = new byte[64];
int bytesRead;
while((bytesRead = inFile.read(input)) != -1){
byte[] output = cipher.update(input,0,bytesRead);
if(output != null)
outFile.write(output);
}
byte[] output = cipher.doFinal();
if(output != null)
outFile.write(output);
inFile.close();
outFile.flush();
outFile.close();
}
}
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
//AES알고리즘으로 키 생성
Cipher cipher = Cipher.getInstance("AES/CTR/PKCS5Padding");
//AES알고리즘, CTR(Counter) mode 암호화 방식, Padding
여기서 같이 암호화된 헤더파일 부분을 수정해주면 볼 수 있게 된다
728x90
반응형
'공부 > 기타' 카테고리의 다른 글
Block 암호의 운영모드 중에서 CBC 방식에 나타나는 “오류의 파급” (0) | 2021.05.09 |
---|---|
대칭키로 평문 암,복호화 (대칭키 외부 저장) (0) | 2021.05.09 |
네이밍 컨벤션 (0) | 2021.05.02 |
Github SourceTree (0) | 2020.09.03 |
마크다운 문법 (typora 사용) (0) | 2020.09.03 |