Сайн байцгаана уу?
Удаан хугацаанд бичсэнгүй, өнгөрсөн хугацаанд судалсан зүйлүүдээсээ хуваалцаж эхлье. Өнөөдрийн хувьд Oracle мэдээллийн сан дээр AES - аар хэрхэн мэдээллээ нууцлах болон сэргээх талаар орууллаа.
Магадгүй нууцлах шаардлагатай мэдээлэлтэй хүмүүс байвал санаа авч болохын.
Хамгийн эхлэн тухайн хэрэглэгчдээ crypto эрхийг оноож өгөх шаардлагатай.
Үүний дараа шифрлэх болон сэргээх хоёр процедурыг мэдээллийн сандаа нэмэж өгсөнөөр бэлэн боллоо гэсэн үг.
Анхаарах ёстой зүйл нь шифрлэсэн өгөгдөл нь RAW өгөгдлийн төрөлтэй байх ёстой. Мөн шифрлэх төрлийг тохируулахдаа дээр харуулсан аргачлалыг сонгосон ба өөр олон хослолыг хэрэглэж болох санагдсан. (DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5).
AES алгоритм нь key шаардлагатай байдаг ба энийг хэрэгжүүлж байгаа хүн нь процедурлуугаа гаднаас дамжуулах, өөр газар хадгалах гээд олон аргаар шийдэж болох байх.
За тэгээд сайжруулалтыг хүн бүр өөрийнхөөрөө судлан нэмэх боломжтой санагдаж байна.
Хүндэтгэсэн,
Эрдэнэбаяр
Linkedin: http://www.linkedin.com/in/erdenebayare
Twitter: http://twitter.com/#!/erdenebayare
Удаан хугацаанд бичсэнгүй, өнгөрсөн хугацаанд судалсан зүйлүүдээсээ хуваалцаж эхлье. Өнөөдрийн хувьд Oracle мэдээллийн сан дээр AES - аар хэрхэн мэдээллээ нууцлах болон сэргээх талаар орууллаа.
Магадгүй нууцлах шаардлагатай мэдээлэлтэй хүмүүс байвал санаа авч болохын.
Хамгийн эхлэн тухайн хэрэглэгчдээ crypto эрхийг оноож өгөх шаардлагатай.
grant execute on dbms_crypto to YOUR_USER;
Үүний дараа шифрлэх болон сэргээх хоёр процедурыг мэдээллийн сандаа нэмэж өгсөнөөр бэлэн боллоо гэсэн үг.
create or replace FUNCTION sec_return_encrypted_data(data IN VARCHAR) RETURN RAW IS
key VARCHAR(16) := 'A1B2C3D4E5F6G7H8';
encryption_mode NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;
BEGIN
RETURN DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW (data, 'AL32UTF8'),
encryption_mode, UTL_I18N.STRING_TO_RAW(key, 'AL32UTF8') );
END;
create or replace FUNCTION sec_return_decrypted_data(data IN RAW) RETURN VARCHAR IS
key VARCHAR(16) := 'A1B2C3D4E5F6G7H8';
encryption_mode NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;
BEGIN
RETURN UTL_RAW.CAST_TO_VARCHAR2(DBMS_CRYPTO.DECRYPT
(data, encryption_mode, UTL_I18N.STRING_TO_RAW(key, 'AL32UTF8')));
END;
Анхаарах ёстой зүйл нь шифрлэсэн өгөгдөл нь RAW өгөгдлийн төрөлтэй байх ёстой. Мөн шифрлэх төрлийг тохируулахдаа дээр харуулсан аргачлалыг сонгосон ба өөр олон хослолыг хэрэглэж болох санагдсан. (DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5).
AES алгоритм нь key шаардлагатай байдаг ба энийг хэрэгжүүлж байгаа хүн нь процедурлуугаа гаднаас дамжуулах, өөр газар хадгалах гээд олон аргаар шийдэж болох байх.
За тэгээд сайжруулалтыг хүн бүр өөрийнхөөрөө судлан нэмэх боломжтой санагдаж байна.
Хүндэтгэсэн,
Эрдэнэбаяр
Linkedin: http://www.linkedin.com/in/erdenebayare
Twitter: http://twitter.com/#!/erdenebayare
No comments:
Post a Comment