Bagaimana cara mengenkripsi kata sandi menggunakan 'EncryptByPassPhrase'?
Meskipun mungkin merupakan praktik populer untuk menyimpan kata sandi dalam database, umumnya tidak begitu umum untuk menyimpannya dengan benar. Anda memiliki tiga pilihan tentang bagaimana melakukannya saat Anda menyimpan kata sandi dalam database. Anda dapat menyimpan kata sandi Anda sebagai:
Biasanya, kami perlu mendekripsi nilai terenkripsi kami karena berbagai alasan. Jadi opsi 2 "Teks terenkripsi yang dapat didekripsi" biasanya diikuti untuk tujuan ini.
Pada artikel ini, kita akan membahas bagaimana caranya Dienkripsi dan mendekripsi teks, kesalahan apa yang muncul saat melakukannya dan apa cara yang disarankan untuk diikuti.
Teks terenkripsi yang dapat didekripsi:
Semua orang mengerti apa itu kata sandi, lebih sedikit orang yang mengenal kata sandi. Frasa sandinya relatif lebih aman. “Entropi” adalah gagasan dalam teori teknologi informasi yang mengacu pada jumlah keacakan yang dimiliki sebuah kata sandi. Biasanya, semakin banyak keacakan kata sandi, semakin sulit untuk membobol kata sandi oleh peretas. Itulah alasan mengapa sandi yang lebih panjang lebih disukai karena mungkin lebih "acak“. Dengan menambahkan kata ke kata sandi, entropi dapat ditingkatkan. Di SQL Server 2008 dan di atas “ENCRYPTBYPASSPHRASE” fungsi mendukung enkripsi frasa sandi di mana Anda dapat menggunakan frasa seperti “Saya ingin es krim” sebagai sandi Anda daripada sandi yang tidak mendukung spasi. Selain itu, ini dapat mengenkripsi kata sandi Anda yang lebih aman.
Itu “ENCRYPTBYPASSPHRASE” fungsi memungkinkan kita untuk mengenkripsi string atau VARBINER nilai hingga 7975 byte. Ini membutuhkan dua parameter, @tokopedia, dan @teks bersih, dan mengembalikan nilai yang berisi nilai terenkripsi dari tipe VARBINER (8000).
Enkripsi informasi frasa sandi menggunakanPanjang 128-kunci TRIPLE DES algoritma. Frasa sandi adalah kata sandi yang mencakup spasi. Manfaat menggunakan frasa sandi adalah mengingat kalimat atau frasa penting lebih sederhana daripada mengingat string karakter yang relatif panjang.
ENCRYPTBYPASSPHRASE:
"ENCRYPTBYPASSPHRASE" menawarkan cara cepat dan mudah untuk mengenkripsi kolom data SQL Server. Fungsi ini tersedia di SQL Server 2008 dan lebih tinggi.
Sintaksis:
EncryptByPassPhrase (@passphrase, @cleartext)
Argumen:
@pasal_foto:
Kunci asimetris dibuat dari frasa sandi. Ini bisa berupa varchar, char, varchar, binary, VARBINER, atau NCHAR tipe variabel yang berisi frasa sandi untuk menghasilkan kunci simetris. Tipe data lainnya, seperti DATE, Anda harus terlebih dahulu mengonversi secara eksplisit ke nilai biner untuk mengenkripsi tanggal lahir.
@teks bersih:
Sebuah NVARCHAR, arang, varchar.dll, biner, VARBINER, atau NCHAR jenis variabel yang berisi teks biasa. Itu maksimum ukurannya delapan ribu byte.
Jenis Pengembalian:
VARBINER dengan 8,000 byte ukuran maksimum.
Penerapan:
BUAT TABEL dbo.encrypted_data ([Id] IDENTITAS INT (1,1) KUNCI UTAMA, [sandi] VARBINER (8000));
Nilai id akan tetap tidak terenkripsi, sedangkan kolom kata sandi bertipe VARBINER (8000), yang cocok dengan tipe kembalian dari ENKRIPSI PASSWORD fungsi.
MASUKKAN KE dbo.encrypted_data ([sandi]) NILAI (ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Ini adalah nomor kartu kredit saya!'));
Terlihat bahwa parameter pertama adalah kata sandi yang menyediakan kunci simetris. Sedangkan yang kedua adalah nilai teks yang perlu dienkripsi.
pilih * dari encrypted_data
Kumpulan hasil akan terlihat seperti ini.
Pernyataan SELECT itu mengembalikan nilaiVARBINERseperti:
“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”
Penting untuk diperhatikan bahwa file VARBINER nilai yang dikembalikan dari ENCRYPTBYPASSPHRASE aku s non-deterministik. Ini berarti tidak akan menghasilkan hasil yang sama setiap saat bahkan dengan input yang sama. Jadi pernyataan SELECT yang sama jika kita menjalankannya dua kali, kita bisa mendapatkan dua keluaran yang berbeda.
SELECT ENCRYPTBYPASSPHRASE('SQL SERVER 2017','Ini nomor kartu kredit saya!'); SELECT ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'This is my credit card number!'); SELECT ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'This is my credit card number!');
Pernyataan pilih akan memberikan put seperti ini:
“0x010000002D69EDEEA6B486FAF38FB353CF2682EE30B450488109BD0E23B88E03CD48F72673C6A462B210D6CE38E00E9F8BA18AB7” untuk pernyataan pilih pertama.
“0x010000007C5736E4B0F15D971D771D2D146924F741D2DB04477C882A6BAF65703F01D950B1AD01E7E4E27E89243F6A4F549170E2” untuk pernyataan kedua.
“0x010000009B49BEBAB4B5E510C0C2998604A005617398631C2EBFB0E3C08DDF27C2A06F447FC11BD10B416C7E58038109EBD52021” untuk pernyataan ketiga.
DECRYPTBYPASSPHRASE:
Kami harus dapat mendekripsi sekarang karena kata sandi kami telah dienkripsi. Ini dilakukan dengan mudah dengan menggunakan fitur tersebut DECRYPTBYPASSPHRASE dengan kata sandi yang sama dengan yang kita gunakan untuk mengenkripsi kata sandi kita.
Jalankan kode berikut. Dan Anda akan mendapatkan kata sandi dengan beberapa karakter alfanumerik panjang sebagai keluaran seperti ini.
“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”
pilih id, DECRYPTBYPASSPHRASE ('SQL SERVER 2017', password) as password from encrypted_data
Itu bukan kata sandi. Suka ENCRYPTBYPASSPHRASE, DECRYPTBYPASSPHRASE mengembalikan a VARBINER nilai yang akan dikodekan menjadi string fungsional. Dengan menambahkan fungsi CONVERT atau cast ke pernyataan SELECT kami, ini dapat dilakukan dengan mudah.