2012-01-22 1 views
0

현재 사용자 데이터 (이름, 주소, 전화)를 사용하는 프로그램을 작성 중입니다. 저장하면 데이터를 읽을 수 없게 만들고 싶습니다. 릴리스 된 프로그램이 아니기 때문에, 너무 복잡하고 단순하고 빠른 스크램블/스크램블 알고리즘이 아닌 암호를 사용하고 싶지 않습니다.java string scramble

+2

알고리즘이 얼마나 복잡합니까? 너 자신을 구현하려고 계획하지 않니? Java는 컨설팅에 익숙해 져야하는 매우 광범위한 라이브러리 환경을 갖추고 있습니다. 대중적인 도서관의 대부분은 허용 된 라이센스로 무료입니다. –

답변

0

클래스를 정의하고 (예를 들어 Foo라고 가정 해 봅시다) 데이터를 보유 할 수있는 클래스의 인스턴스를 만든 다음 객체를 목록에 넣는 방법은 어떻습니까? 그런 다음 목록 개체를 이진 파일로 저장하십시오. 이런 식으로 뭔가 :

public static void saveObject(List<Foo> obj, String filePath) 
{ 
    OutputStream os = null; 
    try 
    { 
     os = new ObjectOutputStream(new FileOutputStream(filePath)); 
     os.writeObject(obj); 
    } 
    catch(Exception ex){} 
    finally 
    { 
     os.close(); 
    } 
} 

그런 다음 당신은 좋아하는로드 할 수 있습니다 :이 객체 직렬화를 사용하는 Serializable 인터페이스를 구현해야

public static List<Foo> loadObject(String filePath) 
{ 
    List<Foo> obj = null; 
    InputStream is = null; 
    try 
    { 
     is = new ObjectInputStream(new FileInputStream(filePath)); 
     obj = (List<Foo>) is.readObject(); 
    } 
    catch(Exception ex){} 
    finally 
    { 
     is.close(); 
    } 
    return obj; 
} 

참고.

+0

그래도 파일을 읽기 쉽게 만들 수 있습니다. 객체 직렬화시 수행되는 객체 데이터의 스크램블링이 없습니다. 걱정하지 않아도 AO 암호를 사용하여 CipherOutputStream을 ObjectOutputStream과 FileOutputStream 사이에 넣을 수 있습니다. 간단한 난독 화를 위해서는 정적 키와 ECB 인코딩 (및 PKCS5Padding)을 사용하십시오. 이 옵션을 선택하기 전에 프로와 직렬화에 대한 이해를 확실히하십시오. 예 : 내부 프로그램 구조의 변경이 디스크에 반영 될 수 있습니다. –

0

당신의 게시물에 따르면, 당신은 암호화/암호 해독의 어떤 방법을 필요로하기 때문에 알고리즘의 강도의 문제를 이해해야합니다. 데이터를 "숨길"수있는 많은 방법에 대해 생각할 수 있지만이 "방어"는 비교적 쉬운 방법으로 손상 될 수 있습니다. 가장 쉬운 구현 방법은 순진한 방법입니다. - 문자열의 각 문자를 숫자로 바꿉니다. - 문자열에서 ASCII 문자로 값을 재생합니다.

또 다시 여기 진짜 질문은 그것이 충분히 좋은지 아닌지입니다 ??? "보안"의 관점에서 - 확실히 아닙니다.