/*
import java.io.*;
import java.net.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
BufferedReader in = null;
BufferedWriter out = null;
Socket socket = null;
Scanner scanner = new Scanner(System.in);
try {
socket = new Socket("localhost", 9999);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true) {
System.out.print("보내기>>");
String outputMessage = scanner.nextLine();
if(outputMessage.equalsIgnoreCase("bye")) {
out.write(outputMessage+"\n");
out.flush();
break;
}
out.write(outputMessage + "\n");
out.flush();
String inputMessage = in.readLine();
System.out.println("서버: " + inputMessage);
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
scanner.close();
if(socket != null) socket.close();
} catch(IOException e) {
System.out.println("서버와 채팅 중 오류가 발생했습니다.");
}
}
}
}
*/
/*
import java.io.*;
import java.net.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
BufferedReader in = null;
BufferedWriter out = null;
ServerSocket listener = null;
Socket socket = null;
Scanner scanner = new Scanner(System.in);
try {
listener = new ServerSocket(9999);
System.out.println("연결을 기다리고 있습니다.....");
socket = listener.accept();
System.out.println("연결되었습니다.");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true) {
String inputMessage = in.readLine();
if (inputMessage.equalsIgnoreCase("bye")) {
System.out.println("클라이언트에서 bye로 연결을 종료하였음");
break;
}
System.out.println("클라이언트: " + inputMessage);
System.out.print("보내기>>");
String outputMessage = scanner.nextLine();
out.write(outputMessage + "\n");
out.flush();
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
scanner.close();
socket.close();
listener.close();
} catch(IOException e) {
System.out.println("클라이언트와 채팅 중 오류가 발생했습니다.");
}
}
}
}
*/
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.event.*;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FileNotFoundException;
public class Main extends JFrame {
JTextArea JTA = new JTextArea(20,20);
JButton JBT = new JButton("Save"),JBA = new JButton("Load");
Machine n;
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
public Main() {
n = new Machine();
setTitle("암호화 문서");
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(JTA, BorderLayout.CENTER);
c.add(JBT, BorderLayout.NORTH);
c.add(JBA, BorderLayout.SOUTH);
JBT.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
File file = new File("C:\\Users\\user\\Desktop\\java images\\note.hut");
FileWriter FilWit = null;
try {
FileOutputStream fileOutputStream = new FileOutputStream(file, false);
FilWit = new FileWriter(file);
String s = n.Encryption(JTA.getText());
FilWit.write(s, 0, s.length());
FilWit.close();
JTA.setText("");
} catch(FileNotFoundException k) {
k.printStackTrace();
}catch(IOException l) {
System.out.println("실패");
}
}
});
JBA.addActionListener(new ActionListener() {
FileReader ren = null;
StringBuffer buf = new StringBuffer("");
int c;
@Override
public void actionPerformed(ActionEvent e) {
chooser.setFileFilter(filter);
int ret = chooser.showOpenDialog(null);
if(ret != JFileChooser.APPROVE_OPTION) {
JOptionPane.showMessageDialog(null, "파일을 선택하지 않았습니다.", "경고", JOptionPane.WARNING_MESSAGE);
return;
}
String filePath = chooser.getSelectedFile().getPath();
File file = new File(filePath);
try {
ren = new FileReader(file);
while((c = ren.read()) != -1) {
buf.append((char)c);
}
} catch(FileNotFoundException m) {
System.out.println("no");
} catch(IOException n) {
}
System.out.println(buf.toString());
JTA.setText(n.Decryption(buf.toString()));
buf = new StringBuffer("");
}
});
repaint();
revalidate();
}
public static void main(String args) {
new Main();
}
}
class Machine {
public Machine() {
//double n = Math.random(); // 0이상 1 미만의 실수
//double m = Math.random()*10; // 0이상 10미만의 실수
//int a = (int)(Math.random()*10); // 0이상 10미만의 정수
}
public String Encryption(String Sentence) {
StringBuffer subString = new StringBuffer();
Vector<String> subVec = new Vector<String>();
for(int ord = 0; ord < Sentence.length(); ord++) {
subVec.add(Integer.toString(ord).length() + Integer.toString(ord) + Integer.toString(Integer.toString((int)Sentence.toCharArray()[ord]).length()) + Integer.toString((int)Sentence.toCharArray()[ord]));
}
while(true) {
String s = subVec.get((int)(Math.random()*subVec.size()));
subString.append(s);
subVec.remove(s);
if(subVec.size() <= 0) {
break;
}
}
return subString.toString();
}
public String Decryption(String Sentence) {
StringBuffer subString = new StringBuffer(Sentence);
HashMap<String, String> subHash = new HashMap<String,String>();
int pos = 0;
while(true) {
int g1 = Character.getNumericValue(subString.toString().toCharArray()[pos]);
String key = subString.substring(pos+1, pos+g1+1);
pos += g1 + 1;
int g2 = Character.getNumericValue(subString.toString().toCharArray()[pos]);
String value = String.valueOf((char)Integer.parseInt(subString.substring(pos+1, pos + g2 + 1)));
pos += g2 + 1;
subHash.put(key, value);
System.out.println(key + " " + value);
if(pos >= subString.toString().length()) {
break;
}
}
subString = new StringBuffer();
for(int i = 0; i < subHash.size(); i++) {
subString.append(subHash.get(Integer.toString(i)));
}
return subString.toString();
}
}
*/