Neste momento estou a desenvolver um projecto em java (o que não é muito favoravel para mim pois não programo em java há mais de 5 anos :oops: )
Qual o caminho a seguir para poder desencriptar as passwords tendo em conta que estas foram encriptadas utilizando o RijndaelEnhanced. Claro que a passPhrase e initVector são diferentes :lol:.
Você precisa implementar o tal código original em C# em Java. É melhor portá-lo completamente.
Você vai ter uma dificuldade adicional, porque você também precisa implementar PasswordDeriveBytes (que não sei qual o algoritmo usado - essa é uma classe do .NET ou do artigo?
Veja se ele usa AES-128 ou AES-256 (isso só dá para saber contando quantos byter retorna PasswordDeriveBytes). Se for até 128 bits (8 bytes) então você não precisa modificar sua instalação do JDK/JRE. Se for mais que 128 bits, você precisa modificar dois arquivos (local_policy.jar e US_export_policy.jar) que estão em jre\lib\security na sua instalação do JRE ou JDK.
RijndaelEnhanced.vb:
-que contem o código exactamente igual ao do artigo(em VB.NET).
e
outra classe que contem o seguinte:
Private passPhrase As String = "Pas5pr@se" ' Estas são as strings que estão no artigo
Private initVector As String = "@1B2c3D4e5F6g7H8" ' Estas são as strings que estão no artigo
Function Encrypt(ByVal str As String) As Boolean
Dim encryptedData As String
Dim rijndaelEncryptKey As RijndaelEnhanced
If String.IsNullOrEmpty(str) Then
Return False
End If
rijndaelEncryptKey = New RijndaelEnhanced(passPhrase, initVector)
Try
encryptedData = rijndaelEncryptKey.Encrypt(str)
Catch ex As Exception
Return False
End Try
Return True
End Function
''' <summary>
''' String Decryption
''' </summary>
''' <param name="str"></param>
''' <remarks></remarks>
Function Decrypt(ByVal str As String) As Boolean
Dim rijndaelEncryptKey As RijndaelEnhanced
Dim decryptedData As String
If String.IsNullOrEmpty(str) Then
Return False
End If
rijndaelEncryptKey = New RijndaelEnhanced(passPhrase, initVector)
Try
decryptedData = rijndaelEncryptKey.Decrypt(str)
Catch ex As Exception
Return False
End Try
Return True
End Function
Julgo que o problema está em passar a classe RijndaelEnhanced.vb para java :roll: . O que eu não faço a minima ideia como fazer :oops:
[quote=thingol]Você precisa implementar o tal código original em C# em Java. É melhor portá-lo completamente.
Você vai ter uma dificuldade adicional, porque você também precisa implementar PasswordDeriveBytes (que não sei qual o algoritmo usado - essa é uma classe do .NET ou do artigo?
Veja se ele usa AES-128 ou AES-256 (isso só dá para saber contando quantos byter retorna PasswordDeriveBytes). Se for até 128 bits (8 bytes) então você não precisa modificar sua instalação do JDK/JRE. Se for mais que 128 bits, você precisa modificar dois arquivos (local_policy.jar e US_export_policy.jar) que estão em jre\lib\security na sua instalação do JRE ou JDK.
Vai dar trabalho …
[/quote]
Estive a ver e a função PasswordDeriveBytes utiliza o algoritmo PBKDF1!
“Derives a key from a password using an extension of the PBKDF1 algorithm”