<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://cs.crisfervil.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">TeraBIThia</title><subtitle type="html">Blog sobre el mundo de la informática y la tecnología. Principalmente sobre la plataforma Microsoft y su .net Framework</subtitle><id>http://cs.crisfervil.com/blogs/crisfervil/atom.aspx</id><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/default.aspx" /><link rel="self" type="application/atom+xml" href="http://cs.crisfervil.com/blogs/crisfervil/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2009-05-23T13:28:46Z</updated><entry><title>CERN CMS Fireworks</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/24/cern-cms-fireworks.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/24/cern-cms-fireworks.aspx</id><published>2009-11-24T22:47:00Z</published><updated>2009-11-24T22:47:00Z</updated><content type="html">&lt;p&gt;He visto unas capturas de pantalla de la aplicaci&amp;oacute;n que usan para analizar los datos que genera el &lt;a target="_blank" href="http://es.wikipedia.org/wiki/Gran_colisionador_de_hadrones"&gt;Colisionador de Hadrones&lt;/a&gt; del &lt;a target="_blank" href="http://public.web.cern.ch/public/en/LHC/LHC-en.html"&gt;CERN&lt;/a&gt; y me ha llamado la atenci&amp;oacute;n lo espectacular de la interface&amp;hellip; as&amp;iacute; que he investigado un poco&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/R121995L6E181_5F00_54A1979A.png"&gt;&lt;img height="484" width="634" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/R121995L6E181_5F00_thumb_5F00_413C8162.png" alt="R121995-L6-E18[1]" border="0" title="R121995-L6-E18[1]" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Parece una aplicaci&amp;oacute;n en Java, o C++ , sobre Linux&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/HaloHCAL1136861_5F00_34DA7007.jpg"&gt;&lt;img height="389" width="645" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/HaloHCAL1136861_5F00_thumb_5F00_672E1DB9.jpg" alt="Halo-HCAL-113686[1]" border="0" title="Halo-HCAL-113686[1]" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;No est&amp;aacute; mal eh!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/CollisionEvent1_5F00_1FC8A1FA.png"&gt;&lt;img height="493" width="645" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/CollisionEvent1_5F00_thumb_5F00_5A6FFF36.png" alt="CollisionEvent[1]" border="0" title="CollisionEvent[1]" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Aunque pone FireWorks, creo que no tiene nada que ver con el &lt;span style="text-decoration:line-through;"&gt;Macromedia&lt;/span&gt; &lt;a target="_blank" href="http://www.adobe.com/products/fireworks/"&gt;Adobe Fireworks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tutorial de la aplicaci&amp;oacute;n:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twiki.cern.ch/twiki/bin/view/CMS/WorkBookFireworksTutorial" title="https://twiki.cern.ch/twiki/bin/view/CMS/WorkBookFireworksTutorial"&gt;https://twiki.cern.ch/twiki/bin/view/CMS/WorkBookFireworksTutorial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;V&amp;iacute;deo de demostraci&amp;oacute;n de la aplicaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cms-service-sdtweb.web.cern.ch/cms-service-sdtweb/fireworks/demo.mov" title="http://cms-service-sdtweb.web.cern.ch/cms-service-sdtweb/fireworks/demo.mov"&gt;http://cms-service-sdtweb.web.cern.ch/cms-service-sdtweb/fireworks/demo.mov&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En el video parece que responde bastante bien. &lt;/p&gt;
&lt;p&gt;La habr&amp;aacute;n hecho en la India? en China? cu&amp;aacute;ndo han podido tardar en hacer algo as&amp;iacute;? cu&amp;aacute;nto debi&amp;oacute; costar? &lt;/p&gt;
&lt;p&gt;El LHC comenz&amp;oacute; a construirse sobre el antiguo t&amp;uacute;nel del &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Large_Electron%E2%80%93Positron_Collider"&gt;LEP&lt;/a&gt;, en el a&amp;ntilde;o 2000, y al parecer tendr&amp;aacute; un coste total de 3,7 Billones (con B) de Euros!!&amp;nbsp; Desde luego no podr&amp;aacute;n decir que no han tenido tiempo y presupuesto..&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cms.web.cern.ch/cms/News/e-commentary/cms-e-commentary09.htm" title="http://cms.web.cern.ch/cms/News/e-commentary/cms-e-commentary09.htm"&gt;http://cms.web.cern.ch/cms/News/e-commentary/cms-e-commentary09.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9491" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="General" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/General/default.aspx" /></entry><entry><title>DataTable to Excel con un control DataGrid</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/datatable-to-excel-con-un-control-datagrid.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/datatable-to-excel-con-un-control-datagrid.aspx</id><published>2009-11-23T17:07:00Z</published><updated>2009-11-23T17:07:00Z</updated><content type="html">&lt;p&gt;Dejo c&amp;oacute;digo con otra opci&amp;oacute;n para exportar datos de un &lt;a href="http://msdn.microsoft.com/es-es/library/system.data.datatable.aspx" target="_blank"&gt;DataTable&lt;/a&gt; a un archivo Excel.&lt;/p&gt;
&lt;p&gt;Resulta que el Excel es capaz de reconocer c&amp;oacute;digo html de una tabla, y eso es precisamente lo que genera el control &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.datagrid.aspx" target="_blank"&gt;DataGrid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Este m&amp;eacute;todo no me gusta demasiado porque implica referenciar el espacio de nombres &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.aspx" target="_blank"&gt;System.Web&lt;/a&gt;, y si estamos en una aplicaci&amp;oacute;n de escritorio, no me parece demasiado elegante. Supongo que en una aplicaci&amp;oacute;n Web, se notar&amp;iacute;a menos, pero un control es para lo que es, y si empezamos a usar cosas para lo que no son es cuando aparecen los problemas.&lt;/p&gt;
&lt;p&gt;Esto mismo se podr&amp;iacute;a hacer usando simplemente un objeto &lt;a href="http://cs.crisfervil.com/controlpanel/blogs/posteditor.aspx/System.Web.UI.HtmlTextWriter" target="_blank"&gt;HtmlWriter&lt;/a&gt;, pero el c&amp;oacute;digo quedar&amp;iacute;a bastante m&amp;aacute;s complejo que este.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_08B70AE7.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_207363AF.png" border="0" height="481" width="756" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Una de las ventajas de este m&amp;eacute;todo es la posibilidad de a&amp;ntilde;adir estilos din&amp;aacute;micamente, por ejemplo usando un fichero css como este:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_348F10E9.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_560E4078.png" border="0" height="364" width="228" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Habr&amp;iacute;a que a&amp;ntilde;adir unas cuantas l&amp;iacute;neas m&amp;aacute;s al m&amp;eacute;todo anterior, para inyectar el contenido del css al html generado.&lt;/p&gt;
&lt;p&gt;Esta alternativa abre la posibilidad de tener varios formatos de exportaci&amp;oacute;n, definidos en distintos archivos css, y un &amp;uacute;nico m&amp;eacute;todo para realizar la exportaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_139E2EF3.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_3061E6CC.png" border="0" height="889" width="763" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Una de las desventajas de esta m&amp;eacute;todo podr&amp;iacute;a ser el rendimiento. El volumen de informaci&amp;oacute;n generado es bastante alto, y ante un n&amp;uacute;mero elevado de filas y de columnas, el rendimiento se resiente. &lt;/p&gt;
&lt;p&gt;Este ser&amp;iacute;a el contenido del texto generado, para un DataTable con dos filas y dos columnas&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_5AD3394B.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_534A5A8F.png" border="0" height="686" width="836" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Abri&amp;eacute;ndolo con el Excel:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_29004416.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_714D89E5.png" border="0" height="241" width="390" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;S&amp;eacute; que funciona con el Excel 2003 y posteriores, pero sospecho, aunque no estoy seguro, de que tambi&amp;eacute;n lo reconoce el Excel 2000.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/datatable-to-excel-con-excelexportlib.aspx"&gt;Tambi&amp;eacute;n se puede exportar a Excel, usando el formato Office Xml.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9489" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /><category term="Snippets" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Snippets/default.aspx" /><category term="Excel" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Excel/default.aspx" /></entry><entry><title>DataTable To Excel con ExcelExportLib</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/datatable-to-excel-con-excelexportlib.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/datatable-to-excel-con-excelexportlib.aspx</id><published>2009-11-23T10:36:00Z</published><updated>2009-11-23T10:36:00Z</updated><content type="html">&lt;p&gt;Dejo este snippet, por si a alguno le puede servir. &lt;/p&gt;  &lt;p&gt;Es una manera más de exportar un DataTable, o un DataSet a un fichero Excel, pero esta vez usando el formato Office Xml.&lt;/p&gt;  &lt;p&gt;Wikipedia: &lt;a title="http://es.wikipedia.org/wiki/Microsoft_Office_XML" href="http://es.wikipedia.org/wiki/Microsoft_Office_XML" target="_blank"&gt;http://es.wikipedia.org/wiki/Microsoft_Office_XML&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Los formatos &lt;b&gt;Microsoft Office XML&lt;/b&gt; (no confundir con &lt;a href="http://es.wikipedia.org/wiki/Office_Open_XML" target="_blank"&gt;Office Open XML&lt;/a&gt;) son formatos de documento basados en XML (o &lt;a href="http://es.wikipedia.org/wiki/XML_Schema" target="_blank"&gt;lenguajes de esquema XML&lt;/a&gt;) introducidos en versiones de &lt;a href="http://es.wikipedia.org/wiki/Microsoft_Office" target="_blank"&gt;Microsoft Office&lt;/a&gt; anteriores a &lt;a href="http://es.wikipedia.org/wiki/Office_2007" target="_blank"&gt;Office 2007&lt;/a&gt;. En Microsoft Office XP se introdujo un nuevo formato &lt;a href="http://es.wikipedia.org/wiki/XML" target="_blank"&gt;XML&lt;/a&gt; para almacenar hojas de cálculo de &lt;a href="http://es.wikipedia.org/wiki/Microsoft_Excel" target="_blank"&gt;Excel&lt;/a&gt; y Office 2003 añadió formatos basados en XML para documentos de &lt;a href="http://es.wikipedia.org/wiki/Microsoft_Word" target="_blank"&gt;Word&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Estos formatos fueron reemplazados por la especificación &lt;a href="http://es.wikipedia.org/wiki/Office_Open_XML" target="_blank"&gt;Office Open XML&lt;/a&gt; (ECMA-376) en &lt;a href="http://es.wikipedia.org/wiki/Microsoft_Office_2007" target="_blank"&gt;Microsoft Office 2007&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;El formato Excel xml tiene más o menos la siguiente apariencia: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_6FEE8EB9.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="546" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_0CF9CE33.png" width="689" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Una de las ventajas de este formato, es la posibilidad de incluir formatos (valga la redundancia), fórmulas, etc. y que son reconocidos desde la versión 2003. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_57839CBE.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="114" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_6E4574F8.png" width="270" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_097DCDFA.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="267" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_3458C2BD.png" width="822" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Más información acerca del formato: &lt;a title="http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx" href="http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una exportación sencilla, no tiene ninguna complicación, pero so quisiéramos añadir ciertas complejidades, hay mucho código que escribir.&lt;/p&gt;  &lt;p&gt;Por eso, me he apoyado en esta librería que proporciona un modelo de objetos bastante sencillo, que permite centrarse en la información a generar, y delegar el “renderizado” del documento xml.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://excelexportlib.codeplex.com/" href="http://excelexportlib.codeplex.com/" target="_blank"&gt;http://excelexportlib.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_438F2B8A.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="216" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_62D4630E.png" width="843" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Traducción: ExcelExportLib es una librería de exportación simple que crea un archivo .xml. Este archivo puede ser abierto en Excel. Al contrario que los archivos &lt;a href="http://es.wikipedia.org/wiki/CSV" target="_blank"&gt;csv&lt;/a&gt;, este formato contiene información de formato. La principal ventaja del proyecto es que permite la exportación de datos en Excel sin necesidad de ejecutar Excel.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A mí lo que me gustó de la librería es lo sencillita que es. Simple, pero potente.&lt;/p&gt;  &lt;p&gt;Un ejemplo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_0DAF57D2.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="377" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_6EFAFE97.png" width="755" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bueno, y finalmente el snippet.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_2331B88F.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="234" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_124D149F.png" width="525" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_3D943C57.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="641" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_2CB22918.png" width="656" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Por supuesto, al Excel generado se le pueden añadir todo tipo de formatos, fórmulas, totales, etc.&lt;/p&gt;  &lt;p&gt;Y allí donde ExcelExportLib no llegue, siempre se puede añadir funcionalidad propia. &lt;/p&gt;  &lt;p&gt;Normalmente para saber cómo se traduce a xml una característica del documento Excel, por ejemplo una fórmula, un formato, etc., se pueden consultar las especificaciones, pero lo más sencillo suele ser generar un documento con la características en cuestión, guardar el archivo en formato xml y ver el resultado.&lt;/p&gt;  &lt;p&gt;Por ejemplo, ¿cómo se especifica la característica de formato condicional?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_7BB2786A.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="195" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_38D633F0.png" width="590" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Guardamos el documento en formato xml….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_23E7422E.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="424" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_73565526.png" width="744" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Y abrimos el resultado con un editor de texto, o uno xml.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_36C0E73A.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="207" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_0869F23E.png" width="722" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;PD: No suelo pegar el código, por un trauma personal. He sufrido el copy-pasteado de mucha gente, y la verdad es que no se lo deseo a nadie. Por eso pongo la imagen, y que cada uno escriba su propio código. Perdón por los inconvenientes ocasionados. ;)&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9488" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /><category term="Snippets" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Snippets/default.aspx" /><category term="Excel" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Excel/default.aspx" /></entry><entry><title>Novedades acerca del caso LSE</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/novedades-acerca-del-caso-lse.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/11/23/novedades-acerca-del-caso-lse.aspx</id><published>2009-11-23T10:00:00Z</published><updated>2009-11-23T10:00:00Z</updated><content type="html">&lt;p&gt;No s&amp;eacute; si habr&amp;aacute;s le&amp;iacute;do algo acerca del caso de la &lt;a href="http://www.londonstockexchange.com/home/homepage.htm" target="_blank"&gt;London Stock Exchange&lt;/a&gt;, en el que se hab&amp;iacute;a reemplazado el sistema existente construido sobre linux y java, por un sistema completamente nuevo basado en el .net framework, windows y sql server.&lt;/p&gt;
&lt;p&gt;Si no, en este post de Jorge viene muy bien explicada toda la historia:    &lt;br /&gt;&lt;a title="http://geeks.ms/blogs/jorge/archive/2009/10/22/el-caso-de-la-lse-london-stock-exchange-y-los-procesos-en-tiempo-real.aspx" href="http://cs.crisfervil.com/blogs/jorge/archive/2009/10/22/el-caso-de-la-lse-london-stock-exchange-y-los-procesos-en-tiempo-real.aspx" target="_blank"&gt;http://geeks.ms/blogs/jorge/archive/2009/10/22/el-caso-de-la-lse-london-stock-exchange-y-los-procesos-en-tiempo-real.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bueno, pues resulta que finalmente han salido a la luz estas im&amp;aacute;genes que relatan &lt;span style="text-decoration:line-through;"&gt;fielmente&lt;/span&gt; como fue la entrevista de trabajo del Project Manager que contrataron para dirigir dicho proyecto. Por supuesto, no puedo citar mis fuentes.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_2DDF98A7.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_7B1222E3.png" border="0" height="209" width="604" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a title="http://www.dilbert.com/" href="http://www.dilbert.com/"&gt;http://www.dilbert.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9486" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="General" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/General/default.aspx" /></entry><entry><title>Resumen Examen MCTS 70-536 - Autenticación y Autorización</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/21/resumen-examen-mcts-70-536-autenticaci-243-n-y-autorizaci-243-n.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/21/resumen-examen-mcts-70-536-autenticaci-243-n-y-autorizaci-243-n.aspx</id><published>2009-10-21T21:59:24Z</published><updated>2009-10-21T21:59:24Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-536&amp;amp;locale=en-us" target="_blank"&gt;&lt;img style="display:inline;margin-left:0px;margin-right:0px;" src="https://www.digitalguru.com/v/vspfiles/photos/9780735626195-2T.jpg" alt="" /&gt;&lt;/a&gt;&amp;#160;&lt;a title="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-536&amp;amp;locale=en-us" href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-536&amp;amp;locale=en-us"&gt;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-536&amp;amp;locale=en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Este es otro de los resúmenes que he rescatado. Va de la gestión de la seguridad en el .net Framework.&lt;/p&gt;  &lt;p&gt;Como curiosidad, indicar que en la &lt;a href="http://www.rae.es/" target="_blank"&gt;RAE&lt;/a&gt; sólo existe el término &lt;em&gt;Autenticación&lt;/em&gt;, y no &lt;em&gt;Autentificación&lt;/em&gt;. Se define &lt;em&gt;autenticación&lt;/em&gt; como la acción y el efecto de &lt;em&gt;autenticar&lt;/em&gt;, y &lt;em&gt;autenticar&lt;/em&gt; es &amp;quot;autorizar o legalizar algo&amp;quot;, o bien &amp;quot;dar fe de la verdad de un hecho o documento con autoridad legal&amp;quot; (fuente: &lt;a href="http://www.rae.es" target="_blank"&gt;diccionario online&lt;/a&gt; de la &lt;a href="http://www.rae.es/" target="_blank"&gt;RAE&lt;/a&gt;). Creo que conocer el significado de las palabras es importante para aclarar nuestras ideas y trasmitirlas con fidelidad a nuestros pensamientos. Por eso me detengo en estos detalles.&lt;/p&gt;  &lt;p&gt;Obs de último momento: Están admitidos tanto el verbo &lt;em&gt;autenticar&lt;/em&gt; como &lt;em&gt;autentificar&lt;/em&gt;. Ambos términos tienen el mismo significado. &lt;a href="http://buscon.rae.es/dpdI/SrvltConsulta?lema=autentificar" target="_blank"&gt;Ver + info aquí&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Bueno... a lo que íbamos.&lt;/p&gt;  &lt;p&gt;En la jerga informática, que es la que nos interesa...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Autenticación&lt;/strong&gt;: Es el proceso de identificación de un usuario.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Autorización&lt;/strong&gt;: Es proceso por el que permite o deniega el acceso de un usuario a un recurso.&lt;/p&gt;  &lt;p&gt;La clase &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;System.Security.Principal.WindowsIdentity&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; representa un usuario de Windows. No permite autenticar a un usuario; solo guarda el resultado de la autenticación. Estos son sus métodos más importantes: &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:578.25pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.principal.windowsidentity.getanonymous(VS.80).aspx" target="_blank"&gt;GetAnonymous&lt;/a&gt; (shared) &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:427.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;Devuelve un objeto &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;WindowsIdentity&lt;/a&gt; que representa a un usuario anónimo. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;GetCurrent (shared) &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:427.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve un objeto &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;WindowsIdentity&lt;/a&gt; que representa el usuario actual de Windows. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Impersonate (shared) &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:427.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve un objeto &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.principal.windowsimpersonationcontext(VS.80).aspx" target="_blank"&gt;WindowsImpersonationContext&lt;/a&gt; que representa un usuario concreto del sistema. Permite al código que se está ejecutando reemplazar a otro usuario de Windows. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;GetCurrent &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:427.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve el objeto &lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsprincipal.aspx" target="_blank"&gt;WindowsPrincipal&lt;/a&gt;&lt;/i&gt; correspondiente al usuario. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Estas son propiedades (no estáticas) de &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;WindowsIdentity&lt;/a&gt;&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:578.25pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;AuthenticationType &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;String que indica el método de autenticación. Generalmente &amp;quot;NTLM&amp;quot;. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsAnonymous &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el usuario es anónimo. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsAuthenticated &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el usuario ha sido autenticado. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsGuest &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el usuario es un usuario &amp;quot;guest&amp;quot; o invitado. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsSystem &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el usuario es un usuario de sistema. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:4;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Name &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;string con el nombre de usuario y el dominio en el que ha sido autenticado. Si posee una barra invertida (\) dentro del nombre, indica que el usuario ha si do autenticado por un dominio de Active Directory. En caso contrario la autenticación se produjo contra el equipo local. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:5;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Token &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;int con el token identificador del usuario. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;La clase &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsprincipal.aspx" target="_blank"&gt;WindowsPrincipal&lt;/a&gt;&lt;/strong&gt; proporciona acceso a los grupos de los que un usuario es miembro. Esta clase debe ser creada pasando como parámetro de su constructor una instancia de &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;WindowsIdentity&lt;/a&gt;, o &lt;/em&gt;bien llamando&amp;#160; al método GetCurrent() de &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx" target="_blank"&gt;WindowsIdentity&lt;/a&gt;. Estos son algunos de sus métodos:&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:582.75pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.principal.windowsprincipal.isinrole(VS.80).aspx" target="_blank"&gt;IsInRole&lt;/a&gt; &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:432pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el usuario es miembro del grupo especificado. &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Las clases &lt;a href="http://msdn.microsoft.com/es-es/library/system.security.permissions.principalpermission.aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; y &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.permissions.principalpermissionattribute.aspx" target="_blank"&gt;PrincipalPermissionAttribute&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; permiten, en conjunto, saber si el usuario cumple o no unos criterios de &lt;em&gt;autorización&lt;/em&gt; determinados. &lt;/p&gt;  &lt;p&gt;Estas son las &lt;strong&gt;propiedades&lt;/strong&gt; de &lt;a href="http://msdn.microsoft.com/es-es/library/system.security.permissions.principalpermission.aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt;&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:577.5pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Authenticated &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;mso-bidi-font-weight:bold;"&gt;bool que en caso de ser &lt;i&gt;true&lt;/i&gt;, indica que el usuario debe estar autenticado para poseer la autorización. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Name &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;string que indica el nombre que debe tener el usuario para poseer la autorización. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Role &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:426.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;string que indica el nombre del grupo al que debe pertenecer el usuario para poseer la autorización. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;strong&gt;     &lt;br /&gt;Métodos&lt;/strong&gt; de &lt;a href="http://msdn.microsoft.com/es-es/library/system.security.permissions.principalpermission.aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt;&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:579pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:148.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Demand &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Comprueba que el usuario cumpla con los criterios de &lt;i&gt;Authenticated&lt;/i&gt;, &lt;i&gt;Name&lt;/i&gt; y &lt;i&gt;Role&lt;/i&gt; especificados en sus propiedades. En caso contrario, se lanza una &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.securityexception(VS.80).aspx" target="_blank"&gt;SecurityException&lt;/a&gt;. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:148.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;&amp;#160;&lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;strong&gt;     &lt;br /&gt;Seguridad Declarativa (Declarative RBS Demands)&lt;/strong&gt;: Indica al runtime, mediante atributos, que realize comprobaciones &lt;strong&gt;R&lt;/strong&gt;ole-&lt;strong&gt;B&lt;/strong&gt;ased &lt;strong&gt;S&lt;/strong&gt;ecurity (Seguridad basada en Roles) antes de ejecutar el código de un ensamblado, clase o método.&lt;/p&gt;  &lt;p&gt;Usar este tipo de atributos es la manera más segura de impedir la ejecución de código a usuarios no autorizados, aunque posee algunos inconvenientes.&lt;/p&gt;  &lt;p&gt;Para usar estos atributos, es no olvidar realizar los siguientes pasos:&lt;/p&gt;  &lt;p&gt;- Realizar una llamada a &lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.setprincipalpolicy.aspx" target="_blank"&gt;System.AppDomain.CurrentDomain.SetPrincipalPolicy&lt;/a&gt;&lt;/i&gt; indicando la política de seguridad para el &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.aspx" target="_blank"&gt;IPrincipal&lt;/a&gt; (usuario) que ejecutará nuestro código.     &lt;br /&gt;- Un bloque try catch para capturar accesos no autorizados. Si se denegara el acceso se lanzaría una &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.securityexception(VS.80).aspx" target="_blank"&gt;SecurityException&lt;/a&gt;.     &lt;br /&gt;- Los atributos &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.permissions.principalpermissionattribute(vs.80).aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt; para declarar los accesos requeridos al ensamblado, clase o método cuyo acceso se desee restringir.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Seguridad Imperativa&lt;/strong&gt;     &lt;br /&gt;Las validaciones usadas en la seguridad imperativa se realizan dentro del código y eliminan la limitación de la seguridad declarativa de restringir los accesos a grandes porciones de código. &lt;/p&gt;  &lt;p&gt;Los pasos para incluir la seguridad imperativa en el código son los siguientes:    &lt;br /&gt;- Realizar una llamada a &lt;i&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.setprincipalpolicy.aspx" target="_blank"&gt;System.AppDomain.CurrentDomain.SetPrincipalPolicy&lt;/a&gt;&lt;/i&gt; indicando la política de seguridad para el &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.aspx" target="_blank"&gt;IPrincipal&lt;/a&gt; (usuario) que ejecutará nuestro código.     &lt;br /&gt;- Un bloque try catch para capturar accesos no autorizados. Si se denegara el acceso se lanzaría una &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.securityexception(VS.80).aspx" target="_blank"&gt;SecurityException&lt;/a&gt;.     &lt;br /&gt;- Un objeto PrincipalPermission para especificar las restricciones que aplicarán al código.     &lt;br /&gt;- Una llamada a &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.permissions.principalpermissionattribute(vs.80).aspx" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.permissions.principalpermission(vs.80).aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt;&lt;/a&gt;.Demand() para verificar que el &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.principal.iprincipal(VS.80).aspx" target="_blank"&gt;IPrincipal&lt;/a&gt; especificado está autorizado.&lt;/p&gt;  &lt;p&gt;La clase &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.permissions.principalpermission(vs.80).aspx" target="_blank"&gt;PrincipalPermission&lt;/a&gt; posee 3 &lt;strong&gt;constructores&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;- PrincipalPermission(&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.permissions.permissionstate(VS.80).aspx" target="_blank"&gt;PermissionState&lt;/a&gt;): el enum PermissionState indica si la política de autorización es restrictiva o permisiva, es decir, si de primeras&amp;#160; no autorizamos al recurso a menos que cumpla el resto de requisitos, o si de primeras autorizamos al recurso, a menos que cumpla los requisitos.     &lt;br /&gt;- PrincipalPermission(Name, Role): Especifica como requisitos de autorización un nombre de usuario y un rol determinado.     &lt;br /&gt;- PrincipalPermission(Name, Role, Authenticated) Especifica como requisitos de autorización un nombre de usuario, un rol y un estado de autorización determinados.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Implementando usuarios y roles(grupos) propios&lt;/strong&gt;     &lt;br /&gt;Para realizar esta tarea es necesario implementar las interfaces &lt;i&gt;System.Security.Principal.IIdentity&lt;/i&gt; y &lt;i&gt;System.Security.Principal.IPrincipal&lt;/i&gt;. Estas interfaces permiten utilizar la infraestructura de acceso y autenticación de la plataforma. De hecho, las clases WindowsIdentity y WindowsPrincipal las implementan. De igual modo, en asp.net existen la clase FormsIdentity y PassportIdentity que también son implementaciones de estas intefaces.     &lt;br /&gt;Con lo cual, para implementar nuestro propio motor de autenticación y gestión de grupos y usuario, tirando por ejemplo, contra una base de datos, debemos, bien heredar de alguna de las clases vistas anteriormente o implementar estas interfaces.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Propiedades de &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.iidentity.aspx" target="_blank"&gt;&lt;strong&gt;IIdentity&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:570pt;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;AuthenticationType &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:418.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;string para determinar el tipo de autenticación a usar. Para usar el de windows, NTLM. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsAuthenticated &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:418.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;booleano que indica si el proceso de autenticación ha sido válido. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:150pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Name &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:418.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;string con el nombre de usuario. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;Métodos de &lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.aspx" target="_blank"&gt;&lt;strong&gt;IPrincipal&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;width:20cm;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:148.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Identity &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:417pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Objeto IIdentity que determina la identidad del usuario &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:148.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IsInRole &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:417pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;bool que indica si el Identity pertenece al grupo o rol especificados. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;La excepción &lt;b&gt;&lt;i&gt;System.Security.Authentication.&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.authentication.authenticationexception.aspx" target="_blank"&gt;AuthenticationException&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; se lanza cuando se produce un error de autenticación.&lt;/p&gt;  &lt;p&gt;La excepción &lt;b&gt;&lt;i&gt;System.Security.Authentication.&lt;a href="http://msdn.microsoft.com/en-us/library/system.security.authentication.invalidcredentialexception.aspx" target="_blank"&gt;InvalidCredentialException&lt;/a&gt;&lt;/i&gt;&lt;/b&gt; se lanza cuando el sistema ha denegado nuestra autenticación y no podemos volver a intentar autenticarnos.&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9479" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="MCP" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/MCP/default.aspx" /><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /></entry><entry><title>Windows Presentation Foundation bloqueado en Firefox – Sucesión de despropósitos</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/20/windows-presentation-foundation-bloqueado-en-firefox-sucesion-de-despropositos.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/20/windows-presentation-foundation-bloqueado-en-firefox-sucesion-de-despropositos.aspx</id><published>2009-10-20T20:37:29Z</published><updated>2009-10-20T20:37:29Z</updated><content type="html">&lt;p&gt;Nada más abrir el Firefox…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_48368006.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_5A329DC6.png" width="551" height="392" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Este es el plug-in que permite ver &lt;a href="http://cs.crisfervil.com/blogs/crisfervil/archive/2007/11/27/aplicaciones-xbap.aspx" target="_blank"&gt;aplicaciones x-bap&lt;/a&gt; en Firefox&lt;/p&gt;  &lt;p&gt;Venga, le doy a ver más información… pero no se reconoce a sí mismo…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_0934D99E.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_7A0DD4F6.png" width="681" height="784" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_616E11D9.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_1F1AF996.png" width="511" height="512" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="https://bugzilla.mozilla.org/show_bug.cgi?id=522777" href="https://bugzilla.mozilla.org/show_bug.cgi?id=522777" target="_blank"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=522777&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx" href="http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx" target="_blank"&gt;http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Por lo visto el bloqueo es debido a una vulnerabilidad en aplicaciones &lt;a href="http://cs.crisfervil.com/blogs/crisfervil/archive/2007/11/27/aplicaciones-xbap.aspx" target="_blank"&gt;x-Bap&lt;/a&gt; que puede ser explotada usando este complemento para Firefox. La vulnerabilidad permite saltarse las protecciones del &lt;a href="http://msdn.microsoft.com/en-us/library/930b76w0(VS.80).aspx" target="_blank"&gt;SandBox&lt;/a&gt; en el que se ejecutan este tipo de aplicaciones. No he encontrado detalles más concretos acerca de cómo explotar esta vulnerabilidad.&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9475" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /></entry><entry><title>Windows Presentation Foundation bloqueado en Firefox – Sucesión de despropósitos</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/20/windows-presentation-foundation-bloqueado-en-firefox-sucesi-243-n-de-desprop-243-sitos.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/20/windows-presentation-foundation-bloqueado-en-firefox-sucesi-243-n-de-desprop-243-sitos.aspx</id><published>2009-10-20T20:37:00Z</published><updated>2009-10-20T20:37:00Z</updated><content type="html">&lt;p&gt;Nada m&amp;aacute;s abrir el Firefox&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cs.crisfervil.com/blogs/crisfervil/image_48368006.png"&gt;&lt;img height="392" width="551" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_5A329DC6.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Este es el plug-in que permite ver &lt;a target="_blank" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2007/11/27/aplicaciones-xbap.aspx"&gt;aplicaciones x-bap&lt;/a&gt; en Firefox&lt;/p&gt;
&lt;p&gt;Venga, le doy a ver m&amp;aacute;s informaci&amp;oacute;n&amp;hellip; pero no se reconoce a s&amp;iacute; mismo&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cs.crisfervil.com/blogs/crisfervil/image_0934D99E.png"&gt;&lt;img height="784" width="681" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_7A0DD4F6.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cs.crisfervil.com/blogs/crisfervil/image_616E11D9.png"&gt;&lt;img height="512" width="511" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_1F1AF996.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=522777" title="https://bugzilla.mozilla.org/show_bug.cgi?id=522777"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=522777&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx" title="http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx"&gt;http://blogs.technet.com/srd/archive/2009/10/12/ms09-054.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por lo visto el bloqueo es debido a una vulnerabilidad en aplicaciones &lt;a target="_blank" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2007/11/27/aplicaciones-xbap.aspx"&gt;x-Bap&lt;/a&gt; que puede ser explotada usando este complemento para Firefox. La vulnerabilidad permite saltarse las protecciones del &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/930b76w0(VS.80).aspx"&gt;SandBox&lt;/a&gt; en el que se ejecutan este tipo de aplicaciones. No he encontrado detalles m&amp;aacute;s concretos acerca de c&amp;oacute;mo explotar esta vulnerabilidad.&lt;/p&gt;
&lt;p&gt;Crossposted from &lt;a href="http://crisfervil.com"&gt;crisfervil.com&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9481" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /></entry><entry><title>Nene no gustar</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/16/nene-no-gustar.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/16/nene-no-gustar.aspx</id><published>2009-10-16T08:29:46Z</published><updated>2009-10-16T08:29:46Z</updated><content type="html">&lt;p&gt;Así no progresamos… &lt;/p&gt;  &lt;p&gt;De acuerdo, hay un error en la escritura, pero uno me lo resuelve, y el otro no. &lt;/p&gt;  &lt;p&gt;Pequeños detalles que hacen que me siga costando tenerlo como buscador por defecto.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_527A214C.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_4CFB8ADB.png" width="610" height="365" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_1AE39EB7.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_113B3081.png" width="818" height="288" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Venga.. vale… vamos a colaborar….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_3B2B08DC.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_5416B354.png" width="480" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9474" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author></entry><entry><title>Resumen Examen MCTS 70-536 - Criptografía</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/16/resumen-examen-mcts-70-536-criptograf-237-a.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/16/resumen-examen-mcts-70-536-criptograf-237-a.aspx</id><published>2009-10-16T08:03:19Z</published><updated>2009-10-16T08:03:19Z</updated><content type="html">&lt;p&gt;Este es un resumen que hice en su día de los temas de criptografía para el examen de certificación. Lo pongo por aquí porque sigue siendo válido y por si a alguno le puede interesar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://vtortola.wordpress.com/2007/06/27/70-536-resumen-67-seguridad-de-aplicacion-usuario-y-datos/" target="_blank"&gt;Aquí&lt;/a&gt; encontraréis un resumen parecido elaborado por mi amigo &lt;a href="http://vtortola.net/" target="_blank"&gt;Valeriano&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Criptografía Simétrica&lt;/b&gt;     &lt;br /&gt;Es el mecanismo de encriptación mediante el cual se pueden encriptar o desencriptar datos utilizando una clave secreta que debe ser conocida por el codificador y el decodificador del mensaje. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;b&gt;Criptografía Asimétrica&lt;/b&gt;     &lt;br /&gt;Es el mecanismo que permite encriptar o desencriptar datos mediante un par de claves, una privada, conocida solo por el codificador y otra pública, conocida por el decodificador.     &lt;br /&gt;La criptografía asimétrica, elimina el problema de la transmisión de la clave secreta entre el codificador y el decodificador del mensaje. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt; &lt;b&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;Usando la criptografía Simétrica con .net Framework&lt;/b&gt;     &lt;br /&gt;Las clases que proporcionan servicios de criptografía se encuentran agrupados en el espacio de nombres &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx" target="_blank"&gt;System.Security.Cryptography&lt;/a&gt;.     &lt;br /&gt;Se proporcionan 4 algoritmos para trabajar con criptografía simétrica: &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Algoritmo                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Longitud Máxima de la Clave                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Descripción                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;RijndaelManaged                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;de 128 a 256 Bits, en incrementos de a 32 Bits              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Es un estándar de encriptación del gobierno estadounidense. Cabe resaltar simplemente que a diferencia de los demás algoritmos, la clase está íntegramente implementada sobre código administrado.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;DES                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;56 bits              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Es un algoritmo de encriptación simétrico que utiliza claves relativamente cortas, con lo cual es vulnerable a ataques. Por esto, no debería ser utilizado.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;RC2                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Variable              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Algoritmo surgido para solventar el problema de encriptación de claves cortas de DES.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;TripleDES                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;156 bits, de los cuales son efectivos únicamente 112              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Básicamente consiste en pasar el DES 3 veces.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Vector de Inicialización (IV):&lt;/b&gt; Es un valor utilizado por el algoritmo de encriptación simétrico para &amp;quot;oscurecer&amp;quot; el primer bloque de datos encriptados, lo que aumenta la dificultad de obtener un acceso no autorizado al mensaje. &lt;/p&gt;  &lt;p&gt;Las clases utilizadas para trabajar con algoritmos simétricos derivan de &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.aspx" target="_blank"&gt;System.Security.Cryptography.SymmetricAlgorithm&lt;/a&gt;&lt;b&gt;&lt;/b&gt;, y exponen las siguientes propiedades y métodos: &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:87.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Propiedades               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:88.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;BlockSize               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece el número de Bits (ojo, Bits no Bytes) que el algoritmo puede procesar en cada vuelta.              &lt;br /&gt;Esta es una propiedad que generalmente no suele ser utilizada por el programador.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:89.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;FeedBackSize               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece el FeedBackSize de la operación. Igual que la anterior, puede ser ignorada.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:90pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;IV               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece el array de bytes utilizado como vector de inicialización del algoritmo.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:90.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Key               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece el array de bytes utilizado como clave por el algoritmo simétrico.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:4;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:91.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;KeySize               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece el tamaño &lt;b&gt;en bits&lt;/b&gt; de la clave utilizada.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:5;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.symmetricalgorithm.legalblocksizes(VS.80).aspx" target="_blank"&gt;LegalBlockSizes&lt;/a&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Array de KeySizes que contiene los tamaños de clave admitidos por el algoritmo.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:6;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.symmetricalgorithm.legalkeysizes(vs.80).aspx" target="_blank"&gt;LegalKeySizes&lt;/a&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Array de KeySizes que contiene los tamaños de clave admitidos por el algoritmo.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:7;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.symmetricalgorithm.mode(vs.80).aspx" target="_blank"&gt;Mode&lt;/a&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Define uno de los aspectos del algoritmo de encriptación. Es uno de los valores definidos en la Enum &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.ciphermode(VS.80).aspx" target="_blank"&gt;CypherMode&lt;/a&gt;.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:8;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Métodos               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:9;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;CreateDecryptor                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Crea el objeto ICryptoTransform que el objeto&amp;#160; CryptoStream necesita para &lt;b&gt;Desencriptar&lt;/b&gt; datos.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:10;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;CreateEncryptor                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Crea el objeto ICryptoTransform que el objeto CryptoStream necesita para &lt;b&gt;Encriptar&lt;/b&gt; datos.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:11;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;GenerateIV                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Genera aleatoriamente un vector de inicialización para usar con el algoritmo.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:12;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;GenerateKey                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Genera aleatoriamente una clave para usar con el algoritmo.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:13;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:92.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;ValidKeySize                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:492.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve un bool que indica si el tamaño de la clase especificada en la propiedad Key es válido para ser utilizado con el algoritmo. Muy útil si trabajamos sin conocer exactamente qué algoritmo vamos a usar.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Creando una clave simétrica      &lt;br /&gt;&lt;/b&gt;Podemos crear una clave simétrica y un vector de inicialización a partir de una contraseña definida por el usuario mediante la clase &lt;b&gt;&lt;i&gt;Rfc2898DeriveBytes&lt;/i&gt;&lt;/b&gt;&lt;i&gt;. &lt;/i&gt;Además de la contraseña del usuario, necesitaremos un valor de salto, que debe ser conocido por el codificador y el decodificador del mensaje.     &lt;br /&gt;Al constructor de la clase &lt;b&gt;&lt;i&gt;Rfc2898DeriveBytes&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;pasaremos la clave definida por el usuario y el valor de salto, codificado en un array de bytes. Posteriormente obtendremos la clave y el vector de inicialización generados mediante el método &lt;b&gt;GetBytes&lt;/b&gt;. A este método, debemos indicar en bytes, la longitud de la clave y el vector que necesitamos obtener. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pasos para realizar operaciones de cifrado/descifrado      &lt;br /&gt;&lt;/b&gt;1- Crear el objeto SymmetricAlgorithm que contendrá la infraestructura relativa al algoritmo que vayamos a usar.     &lt;br /&gt;2- Especificar la clave simétrica y el IV o ambos.     &lt;br /&gt;3- Crear el objeto ICryptoTransform, llamando a SymmetricAlgorithm.CreateEncryptor() o SymmetricAlgorithm.CreateDecryptor() según la operación que vayamos a realizar.     &lt;br /&gt;4- Crear un objeto Stream, en que hará de origen o destino de los datos.     &lt;br /&gt;5- Crear un obeto CryptoStream unsando el Stream de datos que creamos en el paso 4 y el ICryptoTransform del paso 3.     &lt;br /&gt;6- Leer o Escribir en el CryptoStream como si fuera un Stream corriente.     &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Ejemplo:      &lt;br /&gt;&lt;/b&gt;Crearemos un WinForm en el que agregaremos los siguientes controles:     &lt;br /&gt;- Un ComboBox cmbAlgorithm que contendrá la lista de algoritmos disponibles.     &lt;br /&gt;- Un TextBox txtKey que contendrá la clave a utilizar para cifrar/descifrar.     &lt;br /&gt;- Un TextBox txtText que contendrá el texto sobre el que realizaremos la operación y en que mostraremos los resultados.     &lt;br /&gt;- Un Button btnEncrypt que lanzará el proceso de encriptación.     &lt;br /&gt;- Un Button btnDecrypt que lanzará el proceso de desencriptación.&lt;/p&gt;  &lt;p&gt;Crearemos primeramente una función que nos devuelva el valor en el formato correcto para asignar a la Key o al IV.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_224485A8.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_0482FAE9.png" width="590" height="165" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Posteriormente, creamos esta función que nos permitirá encriptar o desencriptar según el parámetro&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image8_2A0C784A.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image8_thumb_0406A227.png" width="748" height="568" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finalmente, llamamos a la función en el Click de los botones&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image16_1FE7B152.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image16_thumb_4CFC9E20.png" width="426" height="161" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Criptografía Asimétrica&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Algoritmos proporcionados por la plataforma: El algoritmo RSA y el DSA y las clases que lo implementan son &lt;b&gt;RSACryptoServiceProvider&lt;/b&gt; y &lt;b&gt;DSACryptoServiceProvider&lt;/b&gt;, respectivamente. Ambas implementaciones son una mera fachada del api de Windows que proporciona esta funcionalidad, y se ejecutan en código no administrado.&lt;/p&gt;  &lt;p&gt;Al igual que los algoritmos simétricos, las clases que permiten implementar estos algoritmos derivan de &lt;i&gt;System.Security.Cryptography.&lt;b&gt;AsymmetricAlgorithm&lt;/b&gt;.&lt;/i&gt;&amp;#160; Esta clase expone las siguientes propiedades: &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Propiedades               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;KeyExchangeAlgorithm               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve el nombre del algoritmo que se está utilizando.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;KeySize               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve el tamaño &lt;b&gt;en bits&lt;/b&gt; de las claves utilizadas.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;LegalKeySizes               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Array con los tamaños de claves permitidos por el algoritmo.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SignatureAlgorithm               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve la URL de un documento XML que describe la firma del algoritmo.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:4;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.rsacryptoserviceprovider.persistkeyincsp(VS.80).aspx" target="_blank"&gt;PersistKeyInCsp&lt;/a&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve o establece un bool que indica si la clave se almacenará en el CSP (Crypto Service Provider).              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:5;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;&lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.rsacryptoserviceprovider.usemachinekeystore(vs.80).aspx" target="_blank"&gt;UseMachineKeyStore&lt;/a&gt;                &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:430.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Obtiene o establece un valor que indica si la clave debe conservarse en el almacén de claves del equipo en lugar del almacén de perfiles de usuario.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Métodos expuestos por la clase RSACryptoServiceProvider&lt;/b&gt; &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Decrypt               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Desencripta datos encriptados con el algoritmo RSA             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Encrypt               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Encripta datos usando el algoritmo RSA             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;ExportParameters               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Devuelve una estructura &lt;a href="http://msdn2.microsoft.com/es-es/library/system.security.cryptography.rsaparameters(VS.80).aspx" target="_blank"&gt;RSAParameters&lt;/a&gt; que representa los parámetros estándar (las claves privada/pública) para el algoritmo RSA. Admite un parámetro booleano que en caso de ser false incluye en la estructura únicamente la clave pública.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;FromXmlString               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Importa el par de claves a partir de la cadena xml suministrada.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;ImportParameters               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Carga el par de claves a partir de la estructura RSAParameters suministrada.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:4;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SignData               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Calcula el valor hash de la matriz de bytes especificada mediante el algoritmo hash proporcionado y firma el valor hash resultante.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:5;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SignHash               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Calcula la firma del valor hash especificado cifrándolo con la clave privada.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:6;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;VerifyData               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Verifica la firma especificada comparándola con el resultado de calcular la firma de los datos especificados.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:7;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;VerifyHash               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:429pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Verifica el valor hash especificado comparándola con el resultado de calcular el valor Hash para los datos especificados.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;¿Cómo Importar y Exportar o persistir claves asimétricas?&lt;/b&gt;     &lt;br /&gt;Para exportar la claves de un algoritmo RSA, podemos recurrir al método ExportParameters de la clase RSACryptoServiceProvider, especificando en el único parámetro booleano admitido, si deseamos exportar tabién la clave privada. Este método nos devolverá una estructura RSAParameters que podemos convertir fácilmente a un array de bytes y transmitir o almacenar donde queramos.&lt;/p&gt;  &lt;p&gt;Adicionalmente, la clase &lt;b&gt;AsymmetricAlgorithm&lt;/b&gt; expone el método &lt;b&gt;ToXmlString()&lt;/b&gt;, que podemos usar igualmente junto con &lt;b&gt;FromXmlString()&lt;/b&gt; para realizar tareas de importación/exportación de claves.&lt;/p&gt;  &lt;p&gt;También es posible abstraerse del medio de persistencia utilizando el almacenamiento proporcionado por el CSP (Crypto Service Provider). Para esto recurriremos al constructor de la clase RSACryptoServiceProvider que admite un parámetro de tipo CspParameters, pasándole una instancia de esta clase con la propiedad KeyContainerName establecida al nombre con el que identificaremos al par de claves en el almacenamiento.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Encryptar y Desencriptar mensajes usando el Algoritmo RSA&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Para estas operaciones &lt;b&gt;RSACryptoServiceProvider&lt;/b&gt; expone los métodos &lt;b&gt;Encrypt()&lt;/b&gt; y &lt;b&gt;Decrypt()&lt;/b&gt;; ambas devuelven un array de bytes con los datos transformados y requieren dos parámetros:&lt;/p&gt;  &lt;p&gt;-byte[] rgb : Datos sobre los que se va a operar.&lt;/p&gt;  &lt;p&gt;-bool fOAEP : Estableciéndolo a true, indicamos al método que&amp;#160; utice el sistema OAEP para truncar los datos sobrantes. Lo importante de este parámetro es que debe usarse el mismo valor tanto para el cifrado como para la descifrado de los datos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Algoritmos de Hash&lt;/b&gt; (does somebody knows the spanish translation of &amp;quot;hash&amp;quot;?)&lt;/p&gt;  &lt;p&gt;Bueno, según el &lt;a href="http://www.wordreference.com/" target="_blank"&gt;WordReference&lt;/a&gt; es &amp;quot;&lt;a href="http://www.wordreference.com/es/translation.asp?tranword=hash&amp;amp;v=js" target="_blank"&gt;sofrito de carne&lt;/a&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;En el argot informático, una clave hash es un valor que se calcula a partir de unos datos y que, al menos en teoría, identifica unívocamente a dichos datos. Estas claves tienen varias aplicaciones, ente ellas por ejemplo, la posibilidad de crear identificadores de archivos de gran tamaño, o la comprobación de la originalidad de un documento.&lt;/p&gt;  &lt;p&gt;Al contrario que la operación de encriptación, la creación de una clave hash es un proceso irreversible; a partir del valor obtenido no se puede volver al dato original.&lt;/p&gt;  &lt;p&gt;Existen dos tipos de algoritmos hash; los no cifrados y los cifrados. Los algoritmos hash cifrados o HMAC (Hash-based Message Authentication Code) se pueden utilizar para determinar si se ha manipulado un mensaje enviado a través de un canal no seguro, siempre que el remitente y el receptor compartan una clave secreta. El remitente calcula el valor hash para los datos originales y envía el valor hash y los datos originales como un solo mensaje. El receptor actualiza el valor hash en el mensaje recibido y comprueba que el código HMAC calculado coincide con el transmitido.    &lt;br /&gt;Cualquier cambio en los datos o en el valor hash producirá una desigualdad, ya que es necesario conocer la clave secreta para cambiar el mensaje y reproducir el valor hash correcto. Por consiguiente, si el original y los valores hash calculados coinciden, el mensaje se autentica.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Algoritmos no cifrados&lt;/b&gt; &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Clase Abstracta               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:152.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Clase Concreta               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Descripción               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;MD5               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;MD5CryptoServiceProvider             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;M&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;essage &lt;b&gt;D&lt;/b&gt;igest. El más usado. La longitud de la clave generada es de 128 bits.               &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;RIPEMD160               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;RIPEMD160Managed             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Su clave tiene 160 bits. Es nuevo en el framework 2.0 y se ha añadido con la intención de sustituir a MD5.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA1               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA1CryptoServiceProvider             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;S&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;ecure &lt;b&gt;H&lt;/b&gt;ash &lt;b&gt;A&lt;/b&gt;lgorithm. Su clave tiene 160 bits.              &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:3;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA256               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA256Managed             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Su clave tiene 256 bits.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:4;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA384               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA384Managed             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Su clave tiene 384 bits.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:5;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:69pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA512               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:153pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;SHA512Managed             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:350.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Su clave tiene 512 bits.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Algoritmos cifrados&lt;/b&gt; &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="LightShading-Accent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Clase               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:421.5pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Descripción               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;HMACSHA1               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:421.5pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;mso-ansi-language:en-us;"&gt;Hash-based Message Authentication Code using &lt;i&gt;SHA1&lt;/i&gt;. &lt;/span&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Admite claves HMAC de cualquier longitud y la clave generada tiene 160 bits.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;MACTripleDES&lt;/span&gt;&lt;/i&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;               &lt;p&gt;&lt;/p&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:421.5pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:115%;margin-bottom:10pt;" class="MsoNormal"&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;mso-ansi-language:en-us;"&gt;Message Authentication Code using TripleDES. &lt;/span&gt;&lt;span style="color:#365f91;mso-themecolor:accent1;mso-themeshade:191;"&gt;Admite claves de 8, 16 ó 24 bytes y genera claves de 64 bits.             &lt;p&gt;&lt;/p&gt;           &lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Pasos para generar claves hash no cifradas      &lt;br /&gt;&lt;/b&gt;1- Crear el objeto Algoritmo     &lt;br /&gt;2- Trasladar los datos a tratar a un array de bytes o a un Stream     &lt;br /&gt;3- Llamar al método de cifrado HashAlgorithm.ComputeHash()     &lt;br /&gt;4- Obtener el array de bytes generado en la propiedad HashAlgorithm.Hash&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Ejemplo&lt;/b&gt;: En una aplicación de consola, generamos el valor hash mediante el algoritmo MD5 para cualquier texto introducido por el usuario.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image23_2C092B79.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image23_thumb_2A585FA5.png" width="489" height="266" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Pasos para generar claves hash cifradas      &lt;br /&gt;&lt;/b&gt;1- Crear la clave secreta que deberá ser compartida por las partes interesada     &lt;br /&gt;2- Crear el objeto algoritmo utilizando la clave secreta generada. Si no se especifica una clave, se creará una por defecto.     &lt;br /&gt;3- Trasladar los datos a tratar a un array de bytes o a un Stream.     &lt;br /&gt;4- Llamar al método de cifrado KeyedHashAlgorithm.ComputeHash()     &lt;br /&gt;5- Obtener el array de bytes generado en la propiedadKeyedHashAlgorithm.Hash&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Ejemplo&lt;/b&gt;: En una aplicación de consola, generamos el valor hash mediante el algoritmo HMACSHA1&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image27_61BE70D3.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image27_thumb_203398AD.png" width="651" height="355" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Y... cómo se yo si la hash es válida o no? (pendiente)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Firma de archivos      &lt;br /&gt;&lt;/b&gt;La firma digital de un archivo es un valor que puede adjuntarse a un fichero como prueba de que alguien, en posesión de una determinada clave privada ha creado un archivo y que éste no ha sido modificado desde su creación. No debe confundirse la firma digital con la encriptación. La firma digital no protege el secreto de un archivo; para ello, el archivo debe encriptarse.&lt;/p&gt;  &lt;p&gt;Las clases que realizan la tarea de firma de archivos son DSACryptoServiceProvider y RSACryptoServiceProvider. Los métodos de estas clases encargados de estas operaciones son los siguientes: &lt;/p&gt;  &lt;table style="border-bottom:medium none;border-left:medium none;border-collapse:collapse;border-top:medium none;border-right:medium none;mso-border-top-alt:solid #4f81bd 1.0pt;mso-border-top-themecolor:accent1;mso-border-bottom-alt:solid #4f81bd 1.0pt;mso-border-bottom-themecolor:accent1;mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;" class="MsoTableLightShadingAccent1" cellspacing="0" cellpadding="0"&gt;     &lt;tr style="mso-yfti-irow:-1;mso-yfti-firstrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:5;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;SignHash &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:423.75pt;padding-right:5.4pt;border-top:#4f81bd 1pt solid;border-right:medium none;padding-top:0cm;mso-border-top-themecolor:accent1;mso-border-bottom-themecolor:accent1;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:1;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;Genera una firma digital basada en la clave Hash de un archivo. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:0;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;SignData &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:423.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;Genera una firma digital generando primero la clave Hash de un archivo y luego generando la firma para dicha Hash. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:1;"&gt;       &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:4;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;VerifyHash &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:medium none;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:423.75pt;padding-right:5.4pt;border-top:medium none;border-right:medium none;padding-top:0cm;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;Verifica que la firma especificada sea válida para la clave Hash especificada &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow:2;mso-yfti-lastrow:yes;"&gt;       &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:149.25pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:68;" class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;VerifyData &lt;/span&gt;              &lt;p&gt;&lt;/p&gt;           &lt;/b&gt;&lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:#4f81bd 1pt solid;border-left:medium none;padding-bottom:0cm;padding-left:5.4pt;width:423.75pt;padding-right:5.4pt;background:#d3dfee;border-top:medium none;border-right:medium none;padding-top:0cm;mso-border-bottom-themecolor:accent1;mso-background-themecolor:accent1;mso-background-themetint:63;"&gt;         &lt;p style="line-height:normal;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-yfti-cnfc:64;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Arial&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:#333333;font-size:10pt;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-fareast-language:es;"&gt;Verifica que la firma especificada sea válida para el contenido del archivo especificado. &lt;/span&gt;            &lt;p&gt;&lt;/p&gt;         &lt;/p&gt;          &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&lt;b&gt;Pasos para generar la firma digital para un fichero      &lt;br /&gt;&lt;/b&gt;1- Crear el objeto algoritmo     &lt;br /&gt;2- Trasladar los datos a tratar a un array de bytes o a un stream     &lt;br /&gt;3- Llamar al método SignData() y guardar la firma     &lt;br /&gt;4- Exportar la clave publica     &lt;br /&gt;Pasos para comprobar la validez de una firma digital para un fichero     &lt;br /&gt;1- Crear el objeto algoritmo     &lt;br /&gt;2- Importar la firma digital y la clave pública     &lt;br /&gt;3- Trasladar los datos a verificar a un array de bytes o a un stream     &lt;br /&gt;4- Llamar al método VerifyData()&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Ejemplo&lt;/b&gt;: En una aplicación de consola, generamos la firma digital para un archivo pasado por parámetro. El modificador -t como primer parámetro indica la acción de comprobar la validez de la firma.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image38_1DAA66EF.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image38_thumb_2742AF58.png" width="552" height="465" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image43_2E323C10.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image43_thumb_6B72F0D7.png" width="555" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9473" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="MCP" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/MCP/default.aspx" /><category term="asp.net" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/asp.net/default.aspx" /></entry><entry><title>RegisterArrayDeclaration</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/13/registerarraydeclaration.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/13/registerarraydeclaration.aspx</id><published>2009-10-13T12:32:00Z</published><updated>2009-10-13T12:32:00Z</updated><content type="html">&lt;p&gt;&lt;a title="http://msdn.microsoft.com/es-es/library/system.web.ui.clientscriptmanager.registerarraydeclaration.aspx" href="http://msdn.microsoft.com/es-es/library/system.web.ui.clientscriptmanager.registerarraydeclaration.aspx"&gt;http://msdn.microsoft.com/es-es/library/system.web.ui.clientscriptmanager.registerarraydeclaration.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_22CC7D7C.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="122" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_6B85F640.png" width="663" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_218A754E.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="98" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_1A6DC987.png" width="671" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Este código, contrariamente a lo que mi retorcida lógica esperaría, no registra el array en código cliente con el valor “4,5,6”, &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_2EC8F33A.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="109" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_237F1D56.png" width="667" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; sino que produce el siguiente código JS:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_5C2C5814.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="144" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_295C51A0.png" width="689" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Esto, simplificado el máximo, se detecta fácilmente, pero si empezamos a retorcerlo….&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_7D41E55F.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="336" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_4F572358.png" width="650" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_72A6A8AE.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="130" alt="image" src="http://cs.crisfervil.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/crisfervil/image_5F00_thumb_5F00_02B57766.png" width="548" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;puede hacer que te tires un buen rato mirando código con cara de tonto.&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9472" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /><category term="asp.net" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/asp.net/default.aspx" /></entry><entry><title>Comentarios deshabilitados en TeraBIThia</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/12/comentarios-deshabilitados-en-terabithia.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/12/comentarios-deshabilitados-en-terabithia.aspx</id><published>2009-10-12T21:30:33Z</published><updated>2009-10-12T21:30:33Z</updated><content type="html">&lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://www.mcfarlanedesamour.com/blog/wp-content/uploads/2009/07/nospam.gif" width="244" height="244" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Deshabilitaré temporalmente los comentarios en este sitio, debido a la ingente cantidad de spam que he recibido en el último mes.&lt;/p&gt;  &lt;p&gt;No doy abasto para borrarlos. &lt;/p&gt;  &lt;p&gt;Si queréis hacer algún comentario, están disponibles los mirrors de este sitio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/blogs/crisfervil" target="_blank"&gt;http://geeks.ms/blogs/crisfervil&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://crisfervil.wordpress.com/" target="_blank"&gt;http://crisfervil.wordpress.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9471" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="General" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/General/default.aspx" /></entry><entry><title>[OPINION] La ciencia española no necesita tijeras</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/07/opinion-la-ciencia-espa-241-ola-no-necesita-tijeras.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/10/07/opinion-la-ciencia-espa-241-ola-no-necesita-tijeras.aspx</id><published>2009-10-07T22:31:03Z</published><updated>2009-10-07T22:31:03Z</updated><content type="html">&lt;p&gt;&lt;a href="http://aldea-irreductible.blogspot.com/2009/10/la-ciencia-en-espana-no-necesita.html" target="_blank"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://farm3.static.flickr.com/2488/3973473121_e76fde787c_o.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Me uno a esta &lt;a href="http://aldea-irreductible.blogspot.com/2009/10/la-ciencia-en-espana-no-necesita.html" target="_blank"&gt;iniciativa&lt;/a&gt; promovida desde &lt;a href="http://aldea-irreductible.blogspot.com/" target="_blank"&gt;La Aldea Irreductible&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Yo, al igual que mi colega &lt;a href="http://elbruno.com" target="_blank"&gt;Bruno&lt;/a&gt;, &lt;a href="http://geeks.ms/blogs/elbruno/archive/2009/10/07/opinion-la-ciencia-espa-241-ola-no-necesita-tijeras.aspx" target="_blank"&gt;también soy un invitado en este país&lt;/a&gt;, pero creo que también puedo arrimar el hombro XD&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=9158" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author></entry><entry><title>Oracle: Comparando Valores Nulos</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/09/22/oracle-comparando-valores-nulos.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/09/22/oracle-comparando-valores-nulos.aspx</id><published>2009-09-22T06:45:46Z</published><updated>2009-09-22T06:45:46Z</updated><content type="html">&lt;p&gt;Esta es otra de esas cosas que he aprendido últimamente a fuerza de engullir una ingente cantidad de código.&lt;/p&gt;  &lt;p&gt;Depurar o no depurar. Esa es la cuestión.&lt;/p&gt;  &lt;p&gt;Estaba intentando comparar el valor de un parámetro de un procedimiento almacenado con el de la columna de una tabla, y resulta que la expresión fallaba a veces. Es por el tratamiento que se hace de los valores nulos al realizar una comparación.&lt;/p&gt;  &lt;p&gt;Si alguno de los valores es nulo, cuando compare dicho valor con otro, aunque sea otro nulo, la expresión devuelve siempre false.&lt;/p&gt;  &lt;p&gt;Parece ser que ocurre lo mismo con las cadenas. Una cadena vacía es siempre distinta de otra cadena vacía.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_1B7823C7.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="88" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_6BBD0BF8.png" width="282" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esta expresión siempre devuelve False&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_5D7E9308.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="97" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_525508BE.png" width="284" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esta también&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_38ED0584.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="98" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_2DC37B3A.png" width="287" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Esta otra también&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_1F85024A.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="112" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_666E2547.png" width="468" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Si coincide que ambos son nulos, esta expresión también devolverá False&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_61F7A480.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="110" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_36B30D79.png" width="482" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Al final acabé con esta. Es una manera sencilla, aunque algo costosa, de comparar dos campos nullables.&lt;/p&gt;  &lt;p&gt;Si comparo dos valores, por ejemplo columnas de una tabla, y ambos son nulos, obtendré Verdadero.&lt;/p&gt;  &lt;p&gt;Versión de Oracle:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_0CD71B9F.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="285" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_4347CDA1.png" width="658" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=8130" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /><category term="Oracle" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Oracle/default.aspx" /></entry><entry><title>No es lo mismo</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/09/21/no-es-lo-mismo.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/09/21/no-es-lo-mismo.aspx</id><published>2009-09-21T15:15:55Z</published><updated>2009-09-21T15:15:55Z</updated><content type="html">&lt;p&gt;Pensaba yo que ordenar cadenas era lo mismo aquí que en la china, pero hete aquí que no.&lt;/p&gt;  &lt;p&gt;Oracle y .net no ordenan igual.&lt;/p&gt;  &lt;p&gt;Esto lo he descubierto por uno de esos errores que te hacen ir a casa harto de mirar código.&lt;/p&gt;  &lt;p&gt;Cómo lo ordenaría &lt;strong&gt;.net&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_3C568627.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="159" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_43098FAA.png" width="749" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Resultado:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_1E780226.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="347" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_305726A4.png" width="693" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Cómo ordenaría &lt;strong&gt;Oracle&lt;/strong&gt; la misma secuencia &lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_6D0EAF34.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="251" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_21AF0B70.png" width="430" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Resultado:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_69FEE1F0.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="269" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_1BF6827B.png" width="142" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Oracle&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;.Net&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;A&lt;/td&gt;        &lt;td&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;a&lt;/td&gt;        &lt;td&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;AA&lt;/td&gt;        &lt;td&gt;a&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;AW&lt;/td&gt;        &lt;td&gt;A&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Z&lt;/td&gt;        &lt;td&gt;AA&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;z&lt;/td&gt;        &lt;td&gt;AW&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;0&lt;/td&gt;        &lt;td&gt;z&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;1&lt;/td&gt;        &lt;td&gt;Z&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Versión de Oracle:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_25D3835C.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="327" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_5A73DF97.png" width="748" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Nunca te acostarás sin aprender una cosa más.&lt;/p&gt;  &lt;p&gt;Si es que… mirar código es aburridísimo… pero si miras bien, siempre acabas encontrando algo.&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=8103" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="dotNetFramework" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/dotNetFramework/default.aspx" /><category term="Oracle" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Oracle/default.aspx" /></entry><entry><title>Instalando Windows Seven</title><link rel="alternate" type="text/html" href="http://cs.crisfervil.com/blogs/crisfervil/archive/2009/05/23/instalando-windows-seven.aspx" /><id>http://cs.crisfervil.com/blogs/crisfervil/archive/2009/05/23/instalando-windows-seven.aspx</id><published>2009-05-23T12:28:46Z</published><updated>2009-05-23T12:28:46Z</updated><content type="html">&lt;p&gt;Por fin me he atrevido a instalar la RC de Windows 7&lt;/p&gt;  &lt;p&gt;El primer problema con el que me he encontrado es que el programa de instalación no instaló los drivers de la tarjeta gráfica, una NVIDIA Quadro NVS 110M, y como consecuencia, AERO no se había activado. &lt;/p&gt;  &lt;p&gt;Nada más conectarme a internet, se detectaron nuevas actualizaciones disponibles, y entre ellas, el driver que necesitaba. Pero claro, aunque ahora ya tenía driver, AERO seguía desactivado.&lt;/p&gt;  &lt;p&gt;Había que activarlo manualmente. Pero no ha sido tan sencillo como un check en el panel de control.&lt;/p&gt;  &lt;p&gt;Pasos para activar AERO:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_624C3131.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_0C4C2F5A.png" width="312" height="303" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Inicio/buscar AERO&lt;/p&gt;  &lt;p&gt;Seleccionar la opión “Find and fix problems…”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_78BECFB8.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_4CA1D2C7.png" width="386" height="295" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Seguir el asistente… y voilá. Ya tenemos AERO activado.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cs.crisfervil.com/blogs/crisfervil/image_561A913D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://cs.crisfervil.com/blogs/crisfervil/image_thumb_3C363541.png" width="459" height="288" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lo que más me gusta, es el rendimiento. De momento se está portando bastante bien. Veremos a ver cuando le meta el antivirus, je je&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Fuente:    &lt;br /&gt;&lt;a title="http://www.mydigitallife.info/2009/01/13/hack-to-force-enable-aero-in-windows-7/" href="http://www.mydigitallife.info/2009/01/13/hack-to-force-enable-aero-in-windows-7/"&gt;http://www.mydigitallife.info/2009/01/13/hack-to-force-enable-aero-in-windows-7/&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://www.mydigitallife.info/2009/01/13/how-to-turn-on-and-enable-aero-in-windows-7-enable-aero-peek/" href="http://www.mydigitallife.info/2009/01/13/how-to-turn-on-and-enable-aero-in-windows-7-enable-aero-peek/"&gt;http://www.mydigitallife.info/2009/01/13/how-to-turn-on-and-enable-aero-in-windows-7-enable-aero-peek/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://cs.crisfervil.com/aggbug.aspx?PostID=4196" width="1" height="1"&gt;</content><author><name>crisfervil</name><uri>http://cs.crisfervil.com/members/crisfervil.aspx</uri></author><category term="Windows" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Windows/default.aspx" /><category term="Microsoft" scheme="http://cs.crisfervil.com/blogs/crisfervil/archive/tags/Microsoft/default.aspx" /></entry></feed>