반응형

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
반응형
블로그 이미지

아상관없어

,