{"id":1657,"date":"2020-05-24T15:35:52","date_gmt":"2020-05-24T15:35:52","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=1657"},"modified":"2020-05-24T15:35:54","modified_gmt":"2020-05-24T15:35:54","slug":"encriptar-y-desencriptar-datos","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=1657","title":{"rendered":"Encriptar y desencriptar datos"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"220\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_D.png\" alt=\"\" class=\"wp-image-1658\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_D.png 220w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_D-150x150.png 150w\" sizes=\"auto, (max-width: 220px) 100vw, 220px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Encriptar y Desencriptar datos en SQL Server<\/h2>\n\n\n\n<p>La importancia de proteger los datos es una actividad que no se debe descuidar, cuando se guarda informaci\u00f3n en las tablas, algunos datos no deben ser f\u00e1cilmente accesibles y si de alguna forma se pueden acceder a estos, deben en los posible presentarse de manera encriptada.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-medium-font-size\"><strong>Tipo de dato Binarios<\/strong><\/p>\n\n\n\n<p>Los tipos de datos binarios permiten guardar datos en un formato que se muestra diferente al texto plano, estos tipos de datos tienen una longitud fija (binary) y logitud variable (varbinary).<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Encriptando los datos<\/strong><\/p>\n\n\n\n<p>Existen varias formas de guardar los datos encriptador en las tablas, se pueden usar diversos algoritmos o se pueden crear y generar los propios. Por ejemplo, puede generar datos encriptados usando Visual Studio .Net y el algoritmo MD5.<br>Para este ejercicio utilizaremos las funciones de SQL Server para guardar los datos en formato binario, para ello se puede usar la funci\u00f3n <strong>EncryptByPassPhrase<\/strong> para encriptar y para desencriptar se utiliza la funci\u00f3n <strong>DecryptByPassPhrase<\/strong>.<br>Para poder mostrar los datos sin encriptar se utilizar\u00e1 Cast para convertir el tipo de dato. (Ver funciones de conversi\u00f3n de datos)<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p style=\"font-size:22px\"><strong>Funci\u00f3n EncryptByPassPhrase<\/strong><\/p>\n\n\n\n<p>Permite encriptar datos, asignando una clave de tipo texto.<br><strong>Sintaxis<\/strong>:<br>EncryptByPassPhrase ( &#8216;FraseClave&#8217; , &#8216;TextoAEncriptar&#8217; )<br>Donde:<br><strong>FraseClave<\/strong>: se utilizar\u00e1 como clave sim\u00e9trica para poder desencriptar.<br><strong>TextoAEncriptar<\/strong>: Texto plano a encriptar.<\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Funci\u00f3n DecryptByPassPhrase<\/strong><\/p>\n\n\n\n<p>Permite desencriptar datos, es necesario dar la clave sim\u00e9trica asignada al momento de encriptar.<br><strong>Sintaxis:<\/strong><br>DecryptByPassPhrase ( &#8216;FraseClave&#8217; , &#8216;TextoADesencriptar&#8217; )<br>Donde:<br><strong>FraseClave<\/strong>: es clave sim\u00e9trica utilizada al encriptar.<br><strong>TextoADesencriptar<\/strong>: Texto a desencriptar.<\/p>\n\n\n\n<p style=\"font-size:18px\" class=\"has-background has-very-light-gray-background-color\"><strong>Importante: Los campos donde se guardar\u00e1n los datos deben ser de tipo binarios (varbinary).<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p>Usando la base de datos Northwind.<br>use Northwind<br>go<\/p>\n\n\n\n<p><strong>Crear una tabla para usuarios, donde se encriptar\u00e1 tanto el nombre del usuario como su password.<\/strong><\/p>\n\n\n\n<p>Create table Usuarios<br>(<br>UsuariosCodigo nchar(4),<br>UsuariosNombre varbinary(200),<br>UsuariosPassword varbinary(200)<br>constraint UsuariosCodigoPK Primary key (UsuariosCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Insertar los siguientes registros<\/strong><br>Nombre: TrainerSQL<br>Password: Bum2020<\/p>\n\n\n\n<p>insert into usuarios values<br>(&#8216;0102&#8217;,<strong>EncryptByPassPhrase<\/strong>(&#8216;ClaveUsuarios&#8217;,&#8217;TrainerSQL&#8217;),<br><strong>EncryptbyPassphrase<\/strong>(&#8216;ClaveUsuarios&#8217;,&#8217;Bum2020&#8242;))<br>go<br>Listar el registros para visualizar los datos encriptados<br>select * from Usuarios<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_01-1024x100.png\" alt=\"\" class=\"wp-image-1659\" width=\"729\" height=\"70\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_01-1024x100.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_01-300x29.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_01-768x75.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_01.png 1334w\" sizes=\"auto, (max-width: 729px) 100vw, 729px\" \/><\/figure>\n\n\n\n<p><strong>Si se desea listar los registros con los datos desencriptados<\/strong><br>select UsuariosCodigo,<br>Cast(<strong>DecryptByPassPhrase<\/strong>(&#8216;ClaveUsuarios&#8217;, UsuariosNombre) As varchar(max)) As &#8216;Nombre&#8217;,<br>Cast(<strong>DecryptByPassPhrase<\/strong>(&#8216;ClaveUsuarios&#8217;, UsuariosPassword) As varchar(200)) As &#8216;Password&#8217;<br>from Usuarios<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_02.png\" alt=\"\" class=\"wp-image-1660\" width=\"789\" height=\"233\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_02.png 756w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_02-300x89.png 300w\" sizes=\"auto, (max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<p>Si el texto usado como clave sim\u00e9trica no es el correcto, muestra Null en los campos encriptados.<br>select UsuariosCodigo,<br>Cast(DecryptByPassPhrase(&#8216;<strong>OtraClave<\/strong>&#8216;, UsuariosNombre) As varchar(max)) As &#8216;Nombre&#8217;,<br>Cast(DecryptByPassPhrase(&#8216;<strong>OtraClave<\/strong>&#8216;, UsuariosPassword) As varchar(200)) As &#8216;Password&#8217;<br>from Usuarios<br>go<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_03.png\" alt=\"\" class=\"wp-image-1661\" width=\"733\" height=\"192\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_03.png 946w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_03-300x79.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQLServer_EncriptadosDatos_03-768x201.png 768w\" sizes=\"auto, (max-width: 733px) 100vw, 733px\" \/><\/figure>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Encriptar y Desencriptar datos en SQL Server La importancia de proteger los datos es una actividad que no se debe descuidar, cuando se guarda informaci\u00f3n en las tablas, algunos datos no deben ser f\u00e1cilmente accesibles y si de alguna forma se pueden acceder a estos, deben en los posible presentarse de manera encriptada.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=1657\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1658,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[175,174,176],"class_list":["post-1657","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-registros-vistas","tag-desencriptar","tag-encriptar-datos","tag-encrypbypassphrase","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1657"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1657\/revisions"}],"predecessor-version":[{"id":1662,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/1657\/revisions\/1662"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1658"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}