1

新しいソフトウェアの開発に取り組んでおり、データベースの値を暗号化したいと考えています。OrientDB を使用しており、tinkerpop ライブラリを使用してプロジェクトを実装しようとしています。ここで私は少し立ち往生しています。

1 つの関数では、ある型のすべての頂点のリストを取得して返す必要があります。個人オブジェクト用の注釈付きインターフェースがあり、必要なフィールドを今すぐ暗号化および復号化するメソッドを追加しました。しかし、それらを復号化すると、復号化された値がデータベースに保持されます。

その時点で暗号化/復号化を処理するためにゲッターとセッターをオーバーライドする方法はありますか、または復号化を実行する前にデータベースからモデルを切り離す必要がありますか?

私のインターフェースのコードは次のとおりです。

public interface iPerson {
@Property("firstName")
public void setFirstName(String firstName);
@Property("firstName")
public String getFirstName();
@Property("lastName")
public String getLastName();
@Property("lastName")
public void setLastName(String lastName);
@Property("id")
public String getId();
@Property("id")
public void setId(String id);
@Property("dateOfBirth")
public String getDateOfBirth();
@Property("dateOfBirth")
public void setDateOfBirth(String dateOfBirth);

@JavaHandler
public void encryptFields() throws Exception;
@JavaHandler
public void decryptFields() throws Exception;

public abstract class Impl implements JavaHandlerContext<Vertex>, iPerson {

    @Initializer
    public void init() {
        //This will be called when a new framed element is added to the graph.
        setFirstName("");
        setLastName("");
        setDateOfBirth("01-01-1900");
        setPK_Person("-1");
    }

    /**
     * shortcut method to make the class encrypt all of the fields that should be encrypted for data storage
     * @throws Exception
     */
    public void encryptFields() throws Exception {
        setLastName(Crypto.encryptHex(getLastName()));
        setFirstName(Crypto.encryptHex(getFirstName()));
        if(getDateOfBirth() != null) {
            setDateOfBirth(Crypto.encryptHex(getDateOfBirth()));
        }
    }

    /**
     * shortcut method to make the class decrypt all of the fields that should be decrypted for data display and return
     * @throws Exception
     */
    public void decryptFields() throws Exception {
        setLastName(Crypto.decryptHex(getLastName()));
        setFirstName(Crypto.decryptHex(getFirstName()));
        if(getDateOfBirth() != null) {
            setDateOfBirth(Crypto.decryptHex(getDateOfBirth()));
        }
    }
}

}

4

2 に答える 2