2011-05-03 3 views
2

일부 데이터베이스 테이블 필드를 암호화해야하는 프로젝트에서 작업하고 있습니다.최대 절전 모드를 사용하여 암호화 된 데이터베이스 필드를 읽는 방법

insert into login_details(uid,username,password) values(1,'smith',EncryptByPassPhrase('12',’XXX’)) 

을 그리고 데이터를 SQL을 읽어 :

ENCRYPTBYPASSPHRASE('PASSPHRASE',‘text’) 

DECRYPTBYPASSPHRASE ('12',password) 

그래서 SQL은 다음과 같이 될 것입니다 데이터를 삽입하기 :이 작업을 수행 할 것입니다 방법은 사용하여 Microsoft SQL 서버 내장 된 암호화/암호 해독 기능입니다 이 방법이 될 것입니다 :

select uid,username, DECRYPTBYPASSPHRASE ('12',password) as Password from login_details 

제 질문은 어떻게 내 기존의 OR 매핑을 사용하여 최대 절전 모드에서 이것을 사용할 수 있습니까? JPA 주석을 사용하고 있습니다. JPA 주석으로이를 쉽게 수행 할 수 있습니까?

답변

3

어떻게 할 지 모르겠습니다. 하지만 내가 읽은 바에 따르면 ENCRYPTBYPASSPHRASE는 트리플 DES를 사용합니다. 그래서 당신은 Hibernate에서와 같이 당신 자신의 데이터를 암호화하고 그것을 영속화시킬 것입니다. 여기 만들기 위해 같이 할 방법이 투명 (분명히, 쿼리 제외) CryptoUtils는 기본적으로 JDK에서 지원 트리플 DES를 (사용하여 해독/비밀 키를 저장하고 암호화에 대한 책임 것

@Entity 
public class LoginDetails { 
    @Column(name = "password") 
    private byte[] encryptedPassword; 

    @Transient 
    private String password; 

    public void getPassword() { 
     if (password == null) { 
      password = CryptoUtils.decrypt(encryptedPassword); 
     } 
     return password; 
    } 

    public void setPassword(String password) { 
     this.encryptedPassword = CryptoUtils.encrypt(password); 
     this.password = password; 
    } 
} 

: http://download.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#Cipher 참조)

암호를 테스트하고 암호 해독을 통해 SQL Server가 암호화 한 내용을 해독 할 수 있는지 확인하고 그 반대의 경우도 마찬가지입니다.

+0

덕분에 나는 그것을 시도 줄 것입니다. – Marquinio

8

는 org.hibernate.annotations.ColumnTransformer 오래된 스레드를 되살리는

@Column(name = "pswd") 
@ColumnTransformer(write="EncryptByPassPhrase('12',?)", read="DECRYPTBYPASSPHRASE ('12',pswd)") 
public String getPassword() { 
    return password; 
} 
6

를 찾고 있습니다,하지만 난 비슷한 요구 사항을 갖는 Jasypt이에 대한 몇 가지 아주 좋은 지원을하고 있습니다 것을 알 수 있었다 것 같은데. Jasypt가 구성되면

, 그것은 "@Type(type="encryptedString")"주석을 추가로 쉽게 :

@Column(name = "password") 
@Type(type="encryptedString") 
public String getPassword() { 
    return password; 
} 
관련 문제