PDA

View Full Version : سوال: encrypt data



dzmode
دوشنبه 27 آبان 1387, 15:18 عصر
سلام
من يك ستون از جدولم را encrypt كردم با كدهاي زير

create master key encryption by password='123'
create certificate cer1 with subject='encrypt sttel field'
create symmetric key key1 with algorithm=des encryption by certificate cer1
open symmetric key key1 decryption by certificate cer1
update student1 set sttel=encryptbykey(key_guid('key1'),sttel)


اما الان وقتي مي خواهم دوباره اطلاعاتم را بدست بيارم ، با كد زير ، همه را null نشون ميده

open symmetric key key1 decryption by certificate cer1
select convert (varchar(20),decryptbykey(sttel)) from student1

لطفا بگيد اشكال كارم كجاست كه به جاي اطلاعات قبلي null مي آورد؟

AminSobati
دوشنبه 27 آبان 1387, 23:27 عصر
سلام دوست عزیزم،
اولا فیلدی که قرار اطلاعات Encrypt شده داشته باشه، از جنس Varbinary در نظر بگیرید. ثانیا موقع Convert، اگر اطلاعات اصلی یونیکد بودن، به nvarchar برگردونین.

dzmode
سه شنبه 28 آبان 1387, 13:54 عصر
با سلام و تشكر از راهنمايي شما !!!
من طبق گفته هاي شما نوع فيلد را به varbinary تغيير دادم، با دستور cast ، اما هنوز اطلاعات را به صورت null نمايش مي دهد.
جدول من :
student1(stname varchar(20),stlname varchar(20), sttel varchar(20), code int primary key)

كدهايي كه نوشته ام:
open symmetric key key1 decryption by certificate cer1
select convert (varchar(20),decryptbykey(cast(sttel as varbinary(20)))) from student1

با تشكر فراوان