إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

تشفير البيانات !


17 رد (ردود) على هذا الموضوع

#1 مستر أوراكل

مستر أوراكل

    مشترك

  • الأعضــاء
  • 69 مشاركة

تاريخ المشاركة 25 February 2004 - 09:30 PM

ماهي الدالة التي عن طريقها أستطيع تشفير البيانات المدخلة من قبل المستخدم .. مثلاً : كلمة السر..
بحيث أمررها للدالة وتقوم الدالة بتشفيرها ..



ملاحظة : توجد مثل هذه الدالة في MySQL .. فليس من المعقول أن لا تكون هناك مثلها في أوراكل :rolleyes:

#2 salama11433

salama11433

    عضو نشط

  • الأعضــاء
  • 356 مشاركة

تاريخ المشاركة 26 February 2004 - 12:09 AM

سوال
يمكن تشفير البيانات مثل اسم العميل وتحويل ال مثلا ؟؟* ؟ " حتى تكون فى سريا للبيانات كيبر
هل ممكن عند ادخل البيانات يقوم البرنامج بتحوله وتسجله فى قاعده البيانات الى رموز والعكس؟؟
لا تبكى على ماضى لا يعود
salama ayad
samy32@msn.com
semsem11433@yahoo.com
Egypt - cairo

#3 TAREK ALHAMAD

TAREK ALHAMAD

    مشترك

  • الأعضــاء
  • 109 مشاركة

تاريخ المشاركة 28 February 2004 - 06:08 AM

أهلا أخى مستر أوراكل ايه أخبارك أسف على التأخر فى الرد

بالنسبة لتشفير بيانات فى حقل معين موجود فى 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 .....

ارجوا ان يكون هذا المثال واضح واي سؤال انا جاهز

أخى مستر أوراكل
أرجو ان يفى ذلك بالغرض ويجيب على سؤالك وانا تحت أمرك لو أردت اى شيى
ولا تنسى الاخ الاستاذ محمد الشنقيطى بالدعاء

والسلام

#4 sammer_haddad

sammer_haddad

    مشترك

  • الأعضــاء
  • 56 مشاركة

تاريخ المشاركة 28 February 2004 - 11:40 AM

بارك الله لكما معا على هذه المعلومة الجميلة،و بالتوفيق.
المستقبل= Oracle
sammer_haddad@gawab.com

#5 مستر أوراكل

مستر أوراكل

    مشترك

  • الأعضــاء
  • 69 مشاركة

تاريخ المشاركة 04 March 2004 - 12:08 AM

شكراً لك :)

لكن .. ألا توجد دالة جاهزة كمافي MySQL ؟؟
عمل هذه الدالة في MySQL هو أنه عندما ترغب بتخزين شيء ما في حق معين تقوم بتمريره إلى هذه الدالة لتقوم بتشفيره
وتقوم نفس هذه الدالة أيضاُ بفك التشفير وذلك عندما ترغب في عرض البيانات على المستخدم

ملاحظة .. الدالة مبنية لتقوم بالتشفير بدرجة عالية من القوة !!

#6 John

John

    عضو نشط

  • الأعضــاء
  • 387 مشاركة

تاريخ المشاركة 06 March 2004 - 01:04 AM

الاخ مستر اوراكل لو توضح كيفية عمل هذه الـ Function
ممكن نعمل واحدة مشابه لها او حتى مبسطة
Johnwahba2002@hotmail.com

#7 مستر أوراكل

مستر أوراكل

    مشترك

  • الأعضــاء
  • 69 مشاركة

تاريخ المشاركة 06 March 2004 - 04:17 PM

عند تنفيذ التالي :
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

أنا أتوقع بأنه يوجد دالة مضمنة في الأوراكل .. فليس من المعقول أن منتجاً يتميز يالأمان العالي في قواعد البيانات ويعتبر منتجا ضخما ولا يوجد به مثل هذه الدالة!!

تم التعديل بواسطة مستر أوراكل, 06 March 2004 - 04:19 PM.


#8 John

John

    عضو نشط

  • الأعضــاء
  • 387 مشاركة

تاريخ المشاركة 06 March 2004 - 04:29 PM

هى دالة جميلة فعلا
يمكن فية واحدة فى الاوركل
Johnwahba2002@hotmail.com

#9 مستر أوراكل

مستر أوراكل

    مشترك

  • الأعضــاء
  • 69 مشاركة

تاريخ المشاركة 11 March 2004 - 04:48 AM

هاه يا شباب ؟

#10 salama11433

salama11433

    عضو نشط

  • الأعضــاء
  • 356 مشاركة

تاريخ المشاركة 14 March 2004 - 02:01 AM

ممكن مثال على هذه الداله
لا تبكى على ماضى لا يعود
salama ayad
samy32@msn.com
semsem11433@yahoo.com
Egypt - cairo

#11 John

John

    عضو نشط

  • الأعضــاء
  • 387 مشاركة

تاريخ المشاركة 14 March 2004 - 03:06 AM

المثال مكتوب اعلاه اخ سلامة
Johnwahba2002@hotmail.com

#12 مستر أوراكل

مستر أوراكل

    مشترك

  • الأعضــاء
  • 69 مشاركة

تاريخ المشاركة 31 March 2004 - 09:49 PM

كل واحد فيكم يدخل على المستخدم system
وبعدين يستعرض الجدول dba_users عن طريق الإستعلام الآتي :
select username,password from dba_users;

ويلاحظ الباسووردات لكل مستخدم !!!

ماذا تلاحظوا ؟؟؟
أن جميعها بنفس الطول .. حتى لو كانت الباسوورد مكونة من ثلاثة خانات

هذه هي نفس طريقة التشفير في MySQL حيث تقوم الدالة بتشفير البيانات بطول ثابت
طبعا صعب فك هذا التشفير .. صعب جدا جدا

#13 Ammar_sajdi

Ammar_sajdi

    عضو

  • الأعضــاء
  • 21 مشاركة

تاريخ المشاركة 12 April 2004 - 07:58 PM

True Encryption and Decryption based on Built-in Oracle

Data Encryption in Oracle
Oracle 8.1.7. Oracle 9

Package name dbms_obfuscation_toolkit.DESEncrypt
dbms_obfuscation_toolkit.DESDecrypt

Example:
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 Sajdi
Amman - Jordan

#14 Osama Soliman

Osama Soliman

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,611 مشاركة
  • الاسم الأول:Osama
  • اسم العائلة:Soliman
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Technical Consultant - Asfour Crystal International

تاريخ المشاركة 22 October 2004 - 03:56 PM

شكراً جزيلا لاخ طارق احمد على هذه المشاركة الرائعة

وقل رب زدنى علماً
Osama M. Soliman
Oracle Certified Professional
Oracle Technical Consultant

 Asfour Crystal International
Cairo - Egypt
Osama.Soliman@hotmail.com
Osama.Soliman@asfourcystal.com


#15 Ahmed Mahdali

Ahmed Mahdali

    مشترك

  • الأعضــاء
  • 73 مشاركة

تاريخ المشاركة 03 December 2005 - 09:50 PM

شكرأ الاخ مستر أوراكل والله يوفقك وإلى الامام معلومة مفيدة جداً
(( سبحان الله وبحمده سبحان الله العظيم))
a7mad003@yahoo.com