nvarchar
데이터 형식 열 (다른 언어로 된 텍스트 포함)이 포함 된 테이블이 있습니다. 레코드를 가져 오는 동안 테이블에 삽입하고 같은 암호를 해독하기 전에 데이터를 암호화하고 싶습니다.oracle에서 nvarchar 열을 암호화하는 방법?
어떻게하면 좋을지 제안 해주세요.
개인 키를 통해 암호화 및 암호 해독을 수행해야합니다.
호핑, 제 질문은 분명합니다. 자세한 정보를 제공해야하는지 확인하십시오.
nvarchar
데이터 형식 열 (다른 언어로 된 텍스트 포함)이 포함 된 테이블이 있습니다. 레코드를 가져 오는 동안 테이블에 삽입하고 같은 암호를 해독하기 전에 데이터를 암호화하고 싶습니다.oracle에서 nvarchar 열을 암호화하는 방법?
어떻게하면 좋을지 제안 해주세요.
개인 키를 통해 암호화 및 암호 해독을 수행해야합니다.
호핑, 제 질문은 분명합니다. 자세한 정보를 제공해야하는지 확인하십시오.
데이터베이스가 아닌 응용 프로그램에서 데이터를 직접 암호화하고 암호 해독하는 것이 좋습니다.
오라클의 DBMS_CRYPTO 패키지를 사용할 수 있습니다. 설명서 페이지 중간에 example이 있습니다.
먼저 SQL 표현식에서 암호 유형에 액세스하려면 패키지를 만들어야합니다. CBC 모드에서 패딩이있는 AES256을 원한다고 가정 해 보겠습니다.
CREATE PACKAGE pkg_so_42979606
AS
FUNCTION cipher_type RETURN PLS_INTEGER;
END pkg_so_42979606;
/
CREATE PACKAGE BODY pkg_so_42979606
AS
ctype CONSTANT PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
FUNCTION cipher_type RETURN PLS_INTEGER
IS
BEGIN
RETURN ctype;
END;
END pkg_so_42979606;
/
그런 다음 키가 필요합니다. Oracle에 생성하도록 요청할 수 있습니다. 쉽게 처리하기 위해 Base64로 옮길 것입니다. 의 하나를 그려 보자 : 내가 사용하는 것
DECLARE
key_bytes_raw RAW(32);
key_char NVARCHAR2(64);
BEGIN
key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(32);
key_char := UTL_I18N.RAW_TO_CHAR(UTL_ENCODE.BASE64_ENCODE(key_bytes_raw), 'AL32UTF8');
DBMS_OUTPUT.PUT_LINE('Key: ' || key_char);
END;
/
Key: pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=
따라서 암호 키가 pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=
입니다.
은 지금 당신은 암호화 된 데이터를 삽입 할 수있는 테스트 테이블을
CREATE TABLE so_42979606 (
id NUMBER PRIMARY KEY,
data NVARCHAR2(2000));
를 사용합니다 :
INSERT INTO so_42979606
VALUES (1,
DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW('My clear data', 'AL32UTF8'),
pkg_so_42979606.cipher_type(),
UTL_ENCODE.BASE64_DECODE(UTL_I18N.STRING_TO_RAW('pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=', 'AL32UTF8'))));
을 지우기에 암호화 된 데이터를 검색 할 수 있습니다.
SELECT id, UTL_I18N.RAW_TO_NCHAR(DBMS_CRYPTO.DECRYPT(data,
pkg_so_42979606.cipher_type(),
UTL_ENCODE.BASE64_DECODE(UTL_I18N.STRING_TO_RAW('pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=', 'AL32UTF8'))),
'AL32UTF8') data
FROM so_42979606;
ID DATA
-- ----------------------
1 My clear data
참조 : ([투명한 데이터 암호화를 사용하여 데이터 저장 데이터베이스 고급 보안 관리자 가이드/3 확보] https://docs.oracle.com/cd/B28359_01/network.111/b28530/asotrans.htm#g1011122)를 Oracle 도움말 센터에 게시하십시오. –
@ OlivierJacot-Descombes 귀하의 제안에 감사드립니다. 표준 버전에서는 사용할 수 없으므로 투명 데이터 암호화를 사용할 수 없습니다. – Tajinder