بتاريخ: 25 فبراير 200422 سنة comment_2095 ماهي الدالة التي عن طريقها أستطيع تشفير البيانات المدخلة من قبل المستخدم .. مثلاً : كلمة السر..بحيث أمررها للدالة وتقوم الدالة بتشفيرها ..ملاحظة : توجد مثل هذه الدالة في MySQL .. فليس من المعقول أن لا تكون هناك مثلها في أوراكل تقديم بلاغ
بتاريخ: 25 فبراير 200422 سنة comment_2105 سوال يمكن تشفير البيانات مثل اسم العميل وتحويل ال مثلا ؟؟* ؟ " حتى تكون فى سريا للبيانات كيبر هل ممكن عند ادخل البيانات يقوم البرنامج بتحوله وتسجله فى قاعده البيانات الى رموز والعكس؟؟ تقديم بلاغ
بتاريخ: 28 فبراير 200422 سنة comment_2241 أهلا أخى مستر أوراكل ايه أخبارك أسف على التأخر فى الرد بالنسبة لتشفير بيانات فى حقل معين موجود فى tableاليك خطوات كان قد قام بها الاخ محمد الشنقيطى فى منتديات الفريق العربى للبرمجةوهى كالتالىوالخطوت سوف تكون انشاء جدول للمستخدمين ثم انشاء اجرائين الأول لتشفير كلمة المرور وحفظها في الجدول والثاني سوف يقوم بفك التشفير .... أولا / لو قمنا بإنشاء جدول للمستخدمن كالتالي : CREATE TABLE APP_USERS(USERID VARCHAR2(20), UPASS VARCHAR2(20)); ثانيا / نقوم بإنشاء الإجراءات التالية : ---أول إجراء سوف يقوم بتشفير كلمة المرور وحفظها في الجدول CREATE OR REPLACE PROCEDURE PASS_ENC(U_NAME IN VARCHAR2,V_PASS_ENCODE IN VARCHAR2) IS V_RESULT VARCHAR2(25); BEGIN SELECT TRANSLATE(V_PASS_ENCODE, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ', '1234567890!@#$%^&*()-=_+;,.') INTO V_RESULT FROM DUAL; INSERT INTO APP_USERS(USERID,UPASS) VALUES (U_NAME,V_RESULT); DBMS_OUTPUT.PUT_LINE(V_RESULT); END; / ---ثان أجراء سوف يقوم بفك التشفير كلمة المرور وويقوم بإستخدامه مدير النظام لفك تشفير كلمات المرور CREATE OR REPLACE PROCEDURE PASS_DEC(V_PASS_DECODE IN VARCHAR2) IS V_RESULT VARCHAR2(25); BEGIN SELECT TRANSLATE( V_PASS_DECODE, '1234567890!@#$%^&*()-=_+;,.', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ') INTO V_RESULT FROM DUAL; DBMS_OUTPUT.PUT_LINE(V_RESULT); END; بعد ذلك يمكننا أضافة المستخدمين كالتالي : BEGIN PASS_ENC('MOHAMMED','DEVORA'); END; لوقمنا بعمل جملة SELECT على الجدول APP_USERS فإن النتيجة سوف تكون : USERID UPASS -------------------- -------------------- MOHAMMED 45=%*1 ولفك التشفير نقوم بإستخدام الإجراء الثاني : BEGIN PASS_DEC('45=%*1'); END; والناتج بالطبع كلمة المرور DEVORA ..... ارجوا ان يكون هذا المثال واضح واي سؤال انا جاهز أخى مستر أوراكلأرجو ان يفى ذلك بالغرض ويجيب على سؤالك وانا تحت أمرك لو أردت اى شيىولا تنسى الاخ الاستاذ محمد الشنقيطى بالدعاءوالسلام تقديم بلاغ
بتاريخ: 28 فبراير 200422 سنة comment_2253 بارك الله لكما معا على هذه المعلومة الجميلة،و بالتوفيق. تقديم بلاغ
بتاريخ: 3 مارس 200422 سنة كاتب الموضوع comment_2559 شكراً لك لكن .. ألا توجد دالة جاهزة كمافي MySQL ؟؟عمل هذه الدالة في MySQL هو أنه عندما ترغب بتخزين شيء ما في حق معين تقوم بتمريره إلى هذه الدالة لتقوم بتشفيرهوتقوم نفس هذه الدالة أيضاُ بفك التشفير وذلك عندما ترغب في عرض البيانات على المستخدمملاحظة .. الدالة مبنية لتقوم بالتشفير بدرجة عالية من القوة !! تقديم بلاغ
بتاريخ: 5 مارس 200422 سنة comment_2665 الاخ مستر اوراكل لو توضح كيفية عمل هذه الـ Function ممكن نعمل واحدة مشابه لها او حتى مبسطة تقديم بلاغ
بتاريخ: 6 مارس 200422 سنة كاتب الموضوع comment_2721 عند تنفيذ التالي : INSERT into users VALUES (001,'Ali','abc123'); فإن كلمة السر ستخزن في الجدول كماهي أي : abc123ولكن عند التعديل إلى الآتي : INSERT into users VALUES (001,'Ali',password('abc123')); يتم تخزين الباسوورد على شكل بيانات مشفرة وبطول ثابت .. حيث تقوم الدالة password بعملية التشفيروعند القراءة وذلك عندما نريد المقارنة بأن الباسوورد التي أدخلها المستخدم تطابق الباسوورد المخزنة فإن نفس الداله password تقوم بفك التشفيروتستخدم كالتالي : SELECT password(user_password) FROM users WHERE ID=001; سيقوم الإستعلام السابق طبعا بعرض باسوورد المستخدم الذي يحمل الرقم 001أنا أتوقع بأنه يوجد دالة مضمنة في الأوراكل .. فليس من المعقول أن منتجاً يتميز يالأمان العالي في قواعد البيانات ويعتبر منتجا ضخما ولا يوجد به مثل هذه الدالة!! تم تعديل 6 مارس 200422 سنة بواسطة مستر أوراكل تقديم بلاغ
بتاريخ: 31 مارس 200422 سنة كاتب الموضوع comment_4530 كل واحد فيكم يدخل على المستخدم systemوبعدين يستعرض الجدول dba_users عن طريق الإستعلام الآتي : select username,password from dba_users; ويلاحظ الباسووردات لكل مستخدم !!!ماذا تلاحظوا ؟؟؟أن جميعها بنفس الطول .. حتى لو كانت الباسوورد مكونة من ثلاثة خاناتهذه هي نفس طريقة التشفير في MySQL حيث تقوم الدالة بتشفير البيانات بطول ثابتطبعا صعب فك هذا التشفير .. صعب جدا جدا تقديم بلاغ
بتاريخ: 12 أبريل 200422 سنة comment_5195 True Encryption and Decryption based on Built-in Oracle Data Encryption in OracleOracle 8.1.7. Oracle 9Package name dbms_obfuscation_toolkit.DESEncryptdbms_obfuscation_toolkit.DESDecryptExample: CREATE OR REPLACE PACKAGE CryptIT AS FUNCTION encrypt( Str VARCHAR2, hash VARCHAR2 ) RETURN VARCHAR2; FUNCTION decrypt( xCrypt VARCHAR2, hash VARCHAR2 ) RETURN VARCHAR2; END CryptIT; / CREATE OR REPLACE PACKAGE BODY CryptIT AS crypt_str VARCHAR2(2000); FUNCTION encrypt( Str VARCHAR2, hash VARCHAR2 ) RETURN VARCHAR2 AS l integer := length(str); i integer; padblock varchar2(2000); BEGIN i := 8-mod(l,8); padblock := str||rpad(chr(i),i,chr(i)); dbms_obfuscation_toolkit.DESEncrypt( input_string => padblock, key_string => RPAD(hash,8,'#'), encrypted_string => crypt_str ); RETURN crypt_str; END; FUNCTION decrypt( xCrypt VARCHAR2, hash VARCHAR2 ) RETURN VARCHAR2 AS l number; BEGIN dbms_obfuscation_toolkit.DESDecrypt( input_string => xCrypt, key_string => RPAD(hash,8,'#'), decrypted_string => crypt_str ); l := length(crypt_str); crypt_str := rpad(crypt_str,l-ascii(substr(crypt_str,l))); RETURN crypt_str; END; END CryptIT; / show err set serveroutput on declare plaintext varchar2(4000); begin -- 12345678123456781234567812345678 plaintext := 'A story about 7 fat dwarfs.'; dbms_output.put_line('>'||cryptit.decrypt(cryptit.encrypt(plaintext,'B'),'B')||'<'); end; / Ammar SajdiAmman - Jordan تقديم بلاغ
بتاريخ: 22 أكتوبر 200421 سنة comment_15981 شكراً جزيلا لاخ طارق احمد على هذه المشاركة الرائعة تقديم بلاغ
بتاريخ: 3 ديسمبر 200520 سنة comment_53100 شكرأ الاخ مستر أوراكل والله يوفقك وإلى الامام معلومة مفيدة جداً تقديم بلاغ
بتاريخ: 20 يونيو 201015 سنة comment_195072 السلام عليكم يوجد إجراء dbms_obfuscation_toolkit.desencryptيستخدم للتشفيرويوجد إجراء dbms_obfuscation_toolkit.desdecryptيستخدم لفك التشفير وهذا مثال يوضح كيفية الاستخدام DECLARE input_string VARCHAR2(16) := 'agilani '; key_string VARCHAR2(8) := 'scottsc '; encrypted_string VARCHAR2(2048); decrypted_string VARCHAR2(2048); begin dbms_obfuscation_toolkit.DESEncrypt( input_string => input_string, key_string => key_string, encrypted_string => encrypted_string ); dbms_output.put_line('> encrypted hex value : ' || rawtohex(UTL_RAW.CAST_TO_RAW(encrypted_string))); dbms_obfuscation_toolkit.DESDecrypt( input_string => encrypted_string, key_string => key_string, decrypted_string => decrypted_string ); dbms_output.put_line('> decrypted string output : ' || decrypted_string); end; dbms_obfuscation_toolkit.txt تقديم بلاغ
بتاريخ: 17 سبتمبر 201015 سنة comment_200147 عندي حل للتشفير بطريقه أخرى create table users_men (user_name varchar2 (120), pass varchar2 (20)); declare x varchar2 (80):=30; begin :user_name:=upper(:user_name); :pass:=upper(:pass); for i in 1 .. length (:pass) loop if mod (i,2)=1 then x:=x || chr(ASCII(substr(:PASS,I,1))+100); else x:=x || chr(ASCII(substr(:pass,I,1))+105); end if; end loop; :pass:=x; commit; end; ولفك التشفير نعكس الكود كالتالي declare x varchar2 (80):=30; begin :user_name:=upper(:user_name); :pass:=upper(:pass); for i in 1 .. length (:pass) loop if mod (i,2)=1 then x:=x || chr(ASCII(substr(:PASS,I,1))-100); else x:=x || chr(ASCII(substr(:pass,I,1))-105); end if; end loop; :pass:=x; commit; end; تم تعديل 17 سبتمبر 201015 سنة بواسطة Mahmoud Shahryar تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.