Hvordan kryptere passord ved hjelp av ‘EncryptByPassPhrase’?

Selv om det kan være populær praksis å lagre passord i en database, er det vanligvis ikke så vanlig å lagre dem riktig. Du har tre valg om hvordan du gjør det når du lagrer et passord i en database. Du kan lagre passordet ditt som:

Vanligvis trenger vi å dekryptere de krypterte verdiene av forskjellige årsaker. Så alternativ 2 "Kryptert tekst som kan dekrypteres" følges vanligvis for dette formålet.

I denne artikkelen vil vi diskutere hvordan Kryptert og dekryptere tekst, hvilke feil som oppstår mens du gjør det, og hva er den anbefalte måten å følge.

Kryptert tekst som kan dekrypteres:

Alle forstår hva et passord er, færre personer er kjent med passfraser. Passordsetningen er relativt sikrere. "Entropi" er et begrep i teorien om informasjonsteknologi som refererer til hvor mye tilfeldighet et passord inneholder. Jo mer tilfeldighet et passord inneholder, desto vanskeligere er det å bryte passordet av hackerne. Det er grunnen til at lengre passord foretrekkes, da de sannsynligvis er mertilfeldig“. Ved å legge til ord i passordet kan entropien økes. I SQL Server 2008 og over “ENCRYPTBYPASSPHRASE” funksjon støtter kryptering av passordfrase der du kan bruke setninger som “Jeg vil gjerne ha iskrem” som passordet ditt enn passord som ikke støtter mellomrom. Videre kan det kryptere ditt sikrere passord.

De “ENCRYPTBYPASSPHRASE” -funksjonen lar oss kryptere hvilken som helst streng eller VARBINÆR verdi opp til 7975 byte. Det trenger to parametere, @passphrase, og @klartekst, og returnerer en verdi som inneholder de krypterte verdiene av typen VARBINÆR (8000).

Krypter informasjon om passordfrase ved hjelp av128 nøkkel bitlengde TRIPLE DES algoritme. En passordfrase er et plass-inkludert passord. Fordelen med å bruke en passordfrase er at det å huske en betydelig setning eller setning er enklere enn å huske en relativt lang karakterstreng.

KrypterBYPASSPHRASE:

“ENCRYPTBYPASSPHRASE” tilbyr en rask og enkel måte å kryptere SQL Server-kolonner med data. Denne funksjonen er tilgjengelig i SQL Server 2008 og opp.

Syntaks:

EncryptByPassPhrase (@passphrase, @cleartext)

Argumenter:

@passphrase:

En asymmetrisk nøkkel genereres fra en passordfrase. Dette kan være varchar, røye, varchar, binær, VARBINÆR, eller NCHAR type variabel som inneholder en passordfrase for å produsere en symmetrisk nøkkel. Enhver annen datatype, for eksempel en DATE, må du først eksplisitt konvertere til en binær verdi for å kryptere fødselsdatoen.

@klartekst:

An NVARCHAR, røye, varchar, binær, VARBINÆR, eller NCHAR type variabel som inneholder ren tekst. De maksimum størrelse er åtte tusen byte.

Returtyper:

VARBINÆR med 8,000 byte maksimal størrelse.

Gjennomføring:

OPPRETT TABELL dbo.encrypted_data ([Id] INT IDENTITY (1,1) PRIMARY KEY, [password] VARBINARY (8000));

ID-verdien forblir ukryptert, mens passordkolonnen er av typen VARBINÆR (8000), som samsvarer med returtypen til ENCRYPTBYPASSPHRASE funksjon.

INSERT INTO dbo.encrypted_data ([password]) VALUES (ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dette er kredittkortnummeret mitt!'));

Det er sett at den første parameteren er passordfrasen som gir en symmetrisk nøkkel. Mens den andre er at tekstverdien må krypteres.

velg * fra kryptert_data

Resultatsettet vil se ut.

Denne påstanden til SELECT returnerer en verdi påVARBINÆRsom for eksempel:

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

Det er viktig å merke seg at VARBINÆR verdi returnert fra ENCRYPTBYPASSPHRASE er ikke-deterministisk. Dette betyr at det ikke vil generere det samme resultatet hver gang, selv med samme inngang. Så den samme SELECT-setningen hvis vi kjører dem to ganger, kan vi få to forskjellige utganger.

VELG ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dette er kredittkortnummeret mitt!'); VELG ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dette er kredittkortnummeret mitt!'); VELG ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Dette er kredittkortnummeret mitt!');

Den valgte uttalelsen vil gi ut slik:

“0x010000002D69EDEEA6B486FAF38FB353CF2682EE30B450488109BD0E23B88E03CD48F72673C6A462B210D6CE38E00E9F8BA18AB7” for førstevalg uttalelse.

“0x010000007C5736E4B0F15D971D771D2D146924F741D2DB04477C882A6BAF65703F01D950B1AD01E7E4E27E89243F6A4F549170E2” for andre uttalelse.

“0x010000009B49BEBAB4B5E510C0C2998604A005617398631C2EBFB0E3C08DDF27C2A06F447FC11BD10B416C7E58038109EBD52021” for tredje uttalelse.

DECRYPTBYPASSPHRASE:

Vi må kunne dekryptere det nå fordi passordet vårt er kryptert. Dette gjøres enkelt ved å bruke funksjonen DECRYPTBYPASSPHRASE med samme passord som vi krypterte passordet vårt med.

Utfør følgende kode. Og du vil få passordet med noen lange alfanumeriske tegn som en utdata som dette.

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

velg id, DECRYPTBYPASSPHRASE ('SQL SERVER 2017', passord) som passord fra encrypted_data

Det er ikke et passord. Som ENCRYPTBYPASSPHRASE, DECRYPTBYPASSPHRASE returnerer a VARBINÆR verdi som skal kodes i en funksjonell streng. Ved å legge til en CONVERT- eller cast-funksjon i SELECT-setningen, kan dette gjøres enkelt.

Facebook Twitter Google Plus Pinterest