Eu tenho um método para criptografar e descriptografar em Java. Como posso reproduzir usando o comando MySQL?
public static String encrypt(String plainString) throws Exception{
byte[] encr = AESBouncyCastle.encrypt(plainString.getBytes("utf-8"), "secretKey");
String encryptedString= Hex.encodeHexString(encr);
return encryptedString;
}
public static String decrypt(String encryptedString) throws Exception{
byte[] retr = AESBouncyCastle.decrypt(Hex.decodeHex(encryptedString.toCharArray()), "secretKey");
String decryptedString = new String(retr, "utf-8");
return decryptedString .trim();
}
Alguma idéia de onde estou fazendo errado? Finalmente, quero ver se posso usar a função AES_DECRYPT no MySQL para descriptografar a string.
ATUALIZAR
Primeiro, preciso descobrir o equivalente Mysql para o Hex.decodeHex de Java. Estamos usando a biblioteca de codecs comuns do Apache.
Eu tentei UNHEX no MySQL e fiz o mesmo em Java, mas os resultados são diferentes.
Quando fiz UNHEX ("956cafe431f5bfc0e66ca7d89359d2e9b63060a3ed5793e60c67aacaca43117c") isso me devolve algo assim • l¯ä1õ¿Àæl§Ø "YÒé¶0` £ íW" ægªÊÊC | . Enquanto Java retorna algo como isto [B @ 32267cbc para Hex.decodeHex ("956cafe431f5bfc0e66ca7d89359d2e9b63060a3ed5793e60c67aacaca43117c" .toCharArray ())
Respostas:
0 para resposta № 1Obviamente, você pode usar a função AES_DECRYPT no MySQL para descriptografar a string.
linke aqui: http://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html