PROBLEMAS EM CLASSE - CRIPTOGRAFIA

ALEVALE 14/05/2013 08:53:36
#423424
Fala pessoal blz, tenho a classe abaixo que é bem simples, peguei até na NET só não me recordo agora...
Seguinte, estou alterando a classe para ler a chave de criptografia direto do APP.CONFIG quando precisar codificar com um chave nova não preciso alterar no fonte....
O problema é que quando eu coloco para ler direto do APP.CONFIG ele dá erro (Constant expression. is required).

O problema está aqui :
Private Const key As String = ConfigurationManager.AppSettings([Ô]ChaveCriptorgrafia[Ô]).ToString()

Quando eu altero para, ele dá erro na classe
Private shared key As String = ConfigurationManager.AppSettings([Ô]ChaveCriptorgrafia[Ô]).ToString()



[ô]CLASSE
Imports System.Text
Imports System.Security.Cryptography
Imports System.Configuration

Public Class clsCriptografia
Private Const key As String = ConfigurationManager.AppSettings([Ô]ChaveCriptorgrafia[Ô]).ToString()
Private Shared TripleDES As New TripleDESCryptoServiceProvider
Private Shared MD5 As New MD5CryptoServiceProvider

[ô][ô][ô] <summary>
[ô][ô][ô] Calcula o MD5 Hash
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]value[Ô]>Chave</param>
Public Shared Function MD5Hash(ByVal value As String) As Byte()

[ô] Converte a chave para um array de bytes
Dim byteArray() As Byte = ASCIIEncoding.ASCII.GetBytes(value)
Return MD5.ComputeHash(byteArray)

End Function


[ô][ô][ô] <summary>
[ô][ô][ô] Encripta uma string com base em uma chave
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]stringToEncrypt[Ô]>String a encriptar</param>
Public Shared Function Encrypt(ByVal stringToEncrypt As String) As String

Try

[ô] Definição da chave e da cifra (que neste caso é Electronic
[ô] Codebook, ou seja, encriptação individual para cada bloco)
TripleDES.Key = clsCriptografia.MD5Hash(key)
TripleDES.Mode = CipherMode.ECB

[ô] Converte a string para bytes e encripta
Dim Buffer As Byte() = ASCIIEncoding.ASCII.GetBytes(stringToEncrypt)
Return Convert.ToBase64String(TripleDES.CreateEncryptor().TransformFinalBlock(Buffer, 0, Buffer.Length))

Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

Return String.Empty

End Try

End Function



[ô][ô][ô] <summary>
[ô][ô][ô] Desencripta uma string com base em uma chave
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]encryptedString[Ô]>String a decriptar</param>
Public Shared Function Decrypt(ByVal encryptedString As String) As String

Try

[ô] Definição da chave e da cifra
TripleDES.Key = clsCriptografia.MD5Hash(key)
TripleDES.Mode = CipherMode.ECB

[ô] Converte a string encriptada para bytes e decripta
Dim Buffer As Byte() = Convert.FromBase64String(encryptedString)
Return ASCIIEncoding.ASCII.GetString(TripleDES.CreateDecryptor().TransformFinalBlock(Buffer, 0, Buffer.Length))

Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

Return String.Empty

End Try

End Function

End Class

KERPLUNK 14/05/2013 09:37:00
#423433
O erro é bem claro, para declarar valor em uma constante, este valor não pode ser dinâmico(como vindo de um app.config), então simplesmente tire o [Ô]const[Ô] da declaração...
ALEVALE 14/05/2013 12:24:06
#423448
Já fiz isso, coloquei ele como Shared, mas na realidade o erro era mais [Ô]grotesco[Ô] ainda, eu coloquei a variável errada (ChaveCriptorgrafia) ao invés de (ChaveCriptografia).
Tópico encerrado , respostas não são mais permitidas