teckV Posted May 17, 2006 at 05:15 PM Report Share #27882 Posted May 17, 2006 at 05:15 PM Boas, estou a tabalhar num algoritmo para encriptar dados em MS SQL server usando a cifra TripleDES com recurso a vector de inicialização... para tal criei uma classe com o nome "myObjTripleDES" onde encapsulo os "internals" do algoritmo TripleDES... esta classe tem os metodos "encrypt" para encriptar um texto e o "Decrypt" para desencriptar... o TripleDES é simetrico pelo que precisa de um chave e um vector de iniciação... estão dentro da classe em arrays de bytes... temos um textbox onde introduzimos o texto e outro que o apresenta depois de cifrado e descifrado... codigo para usar esta classe (se alguem quiser esta classe vou postala na zona de VB.NET) Dim crypt As New myObjTripleDES Dim textByte() As Byte textByte = crypt.Encrypt(txtInicio.Text) txtFim.Text = crypt.Decrypt(textByte) portantos o Array de Bytes "textByte" contem um array de bytes com o texto cifrado (torna muito mais dificil o seu manuseamento indevido, que é o pretendido... txtInicio.Text contem o texto que queremos cifrar textByte = crypt.Encrypt(txtInicio.Text) mas agora se quisermo introduzir isto numa BD levantam-se problemas pelo que acho iteressante partilhar esta info... quero fazer o update a um registo com um campo varbinary(100) mas não podemos usar os metodos standard de criar a query on the fly recorrendo a strings, pois temos um Array Multidimensional com os bytes do nosso texto... vou apresentar aqui uma forma de o fazer que é criando SQLParameters e passar o Array de Bytes através de um SqlParameter criar o parametro: Dim paramTextByte As New SqlParameter("@slimC", textByte) o commandText cmdInsertText = "UPDATE ad_appSets SET slim = @slimC " & _ "WHERE (nomeCampo = 'adROOTpath')" onde "slim" é o nome do campo do tipo varbinary e "@slimC " o parametro mysql que vai ser usado para passar o array de bytes para a BD assim MyCommand.CommandText = cmdInsertText MyCommand.Parameters.Add(paramTextByte) Call MyCommand.ExecuteNonQuery() o codigo completo: Private Sub btnSetPass_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetPass.Click Try Dim cmdInsertText As String Dim myAppUtils As New appUtils Dim objCryp As New myObjTripleDES Dim textByte() As Byte textByte = objCryp.Encrypt(txtText.Text) Dim conStr = myAppUtils.confConString Dim MyCon = New SqlConnection(conStr) MyCon.Open() Dim MyCommand As SqlCommand = New SqlCommand MyCommand.Connection = MyCon Dim paramTextByte As New SqlParameter("@slimC", textByte) cmdInsertText = "UPDATE ad_appSets SET slim = @slimC " & _ "WHERE (nomeCampo = 'adROOTpath')" MyCommand.CommandText = cmdInsertText MyCommand.Parameters.Add(paramTextByte) Call MyCommand.ExecuteNonQuery() myAppUtils = Nothing 'Fecha a ligação à BD MyCommand = Nothing MyCon.close() Catch ex As Exception deb.WriteLine("erro = " & ex.Message) lblMSG.Text = "Ocorreu um erro na introdução dos dados!! Verifique os dados a introduzir" End Try End Sub fiquem teckV Link to comment Share on other sites More sharing options...
M6 Posted May 17, 2006 at 05:28 PM Report Share #27891 Posted May 17, 2006 at 05:28 PM Completo com duas técnicas alternativas, que permitem a utilização de SQL standard quando não se tem acesso a JET/ADO/etc.. Sabendo o tamanho das dimensões do array, e visto que neste caso é um array multidimensional, é possível guardar cada uma das dimensões, e o seu índice, num registo. Desta forma é possível reconstruir o array sem problemas recorrendo ao índice Outra forma é guardar tudo num único registo numa única cadeia de bytes, sendo obviamente necessário saber o tamanho para a reconstrução do array multidimensional. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Asgorath Posted May 19, 2006 at 12:43 PM Report Share #28277 Posted May 19, 2006 at 12:43 PM O Sql Server 2005 já suporta encriptacao. Jorge "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now