مستر أوراكل بتاريخ: 25 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 25 فبراير 2004 ماهي الدالة التي عن طريقها أستطيع تشفير البيانات المدخلة من قبل المستخدم .. مثلاً : كلمة السر..بحيث أمررها للدالة وتقوم الدالة بتشفيرها ..ملاحظة : توجد مثل هذه الدالة في MySQL .. فليس من المعقول أن لا تكون هناك مثلها في أوراكل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
salama11433 بتاريخ: 25 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 25 فبراير 2004 سوال يمكن تشفير البيانات مثل اسم العميل وتحويل ال مثلا ؟؟* ؟ " حتى تكون فى سريا للبيانات كيبر هل ممكن عند ادخل البيانات يقوم البرنامج بتحوله وتسجله فى قاعده البيانات الى رموز والعكس؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TAREK ALHAMAD بتاريخ: 28 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2004 أهلا أخى مستر أوراكل ايه أخبارك أسف على التأخر فى الرد بالنسبة لتشفير بيانات فى حقل معين موجود فى 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 ..... ارجوا ان يكون هذا المثال واضح واي سؤال انا جاهز أخى مستر أوراكلأرجو ان يفى ذلك بالغرض ويجيب على سؤالك وانا تحت أمرك لو أردت اى شيىولا تنسى الاخ الاستاذ محمد الشنقيطى بالدعاءوالسلام اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sammer_haddad بتاريخ: 28 فبراير 2004 تقديم بلاغ مشاركة بتاريخ: 28 فبراير 2004 بارك الله لكما معا على هذه المعلومة الجميلة،و بالتوفيق. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
مستر أوراكل بتاريخ: 3 مارس 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 3 مارس 2004 شكراً لك لكن .. ألا توجد دالة جاهزة كمافي MySQL ؟؟عمل هذه الدالة في MySQL هو أنه عندما ترغب بتخزين شيء ما في حق معين تقوم بتمريره إلى هذه الدالة لتقوم بتشفيرهوتقوم نفس هذه الدالة أيضاُ بفك التشفير وذلك عندما ترغب في عرض البيانات على المستخدمملاحظة .. الدالة مبنية لتقوم بالتشفير بدرجة عالية من القوة !! اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
John بتاريخ: 5 مارس 2004 تقديم بلاغ مشاركة بتاريخ: 5 مارس 2004 الاخ مستر اوراكل لو توضح كيفية عمل هذه الـ Function ممكن نعمل واحدة مشابه لها او حتى مبسطة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
مستر أوراكل بتاريخ: 6 مارس 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 6 مارس 2004 (معدل) عند تنفيذ التالي : 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 مارس 2004 بواسطة مستر أوراكل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
John بتاريخ: 6 مارس 2004 تقديم بلاغ مشاركة بتاريخ: 6 مارس 2004 هى دالة جميلة فعلا يمكن فية واحدة فى الاوركل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
مستر أوراكل بتاريخ: 11 مارس 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 11 مارس 2004 هاه يا شباب ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
salama11433 بتاريخ: 13 مارس 2004 تقديم بلاغ مشاركة بتاريخ: 13 مارس 2004 ممكن مثال على هذه الداله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
John بتاريخ: 14 مارس 2004 تقديم بلاغ مشاركة بتاريخ: 14 مارس 2004 المثال مكتوب اعلاه اخ سلامة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
مستر أوراكل بتاريخ: 31 مارس 2004 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 31 مارس 2004 كل واحد فيكم يدخل على المستخدم systemوبعدين يستعرض الجدول dba_users عن طريق الإستعلام الآتي : select username,password from dba_users; ويلاحظ الباسووردات لكل مستخدم !!!ماذا تلاحظوا ؟؟؟أن جميعها بنفس الطول .. حتى لو كانت الباسوورد مكونة من ثلاثة خاناتهذه هي نفس طريقة التشفير في MySQL حيث تقوم الدالة بتشفير البيانات بطول ثابتطبعا صعب فك هذا التشفير .. صعب جدا جدا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ammar_sajdi بتاريخ: 12 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 12 أبريل 2004 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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Osama Soliman بتاريخ: 22 أكتوبر 2004 تقديم بلاغ مشاركة بتاريخ: 22 أكتوبر 2004 شكراً جزيلا لاخ طارق احمد على هذه المشاركة الرائعة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmed Mahdali بتاريخ: 3 ديسمبر 2005 تقديم بلاغ مشاركة بتاريخ: 3 ديسمبر 2005 شكرأ الاخ مستر أوراكل والله يوفقك وإلى الامام معلومة مفيدة جداً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mohsein بتاريخ: 20 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 20 يونيو 2010 السلام عليكم يوجد إجراء 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 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mon4love بتاريخ: 25 يونيو 2010 تقديم بلاغ مشاركة بتاريخ: 25 يونيو 2010 في داله للتشفير الملف اسمها warb اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Mahmoud Shahryar بتاريخ: 17 سبتمبر 2010 تقديم بلاغ مشاركة بتاريخ: 17 سبتمبر 2010 (معدل) عندي حل للتشفير بطريقه أخرى 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 سبتمبر 2010 بواسطة Mahmoud Shahryar اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.