2017-09-26 3 views
0

저는 AES_Decrypt가 작동하도록 많은 변형을 시도해 왔습니다. 나는 필드 타입 VARBINARY로 시작했지만 BLOB을 시도했지만 여전히 행운은 NULL을 반환한다. 결국 나는이 시도 :MySQL AES_Decrypt가 작동하지 않습니다.

SELECT AES_DECRYPT(AES_ENCRYPT('blah blah blah','1234'), '1234') as test 

이 기술적으로 반환해야 어쩌구 저쩌구하지만 대신 무슨 일이야 아니면 내가 잘못 뭐하는 거지 그래서 확실하지

626c616820626c616820626c6168 

반환합니다. 다음과 같이

나는 암호화 된 데이터를 삽입 :

INSERT INTO private (short_name, mobile, name) 
VALUES (
    'AS1', 
    AES_ENCRYPT('0111222333','1234'), 
    AES_ENCRYPT('My Name','1234') 
) 

그때 나는이 같은 암호를 해독하려고 :

SELECT AES_DECRYPT('mobile', '1234') AS mobile FROM private 

그냥 작동하지 않습니다. 지시 사항을 온라인으로 계속 따라 갔지만 여전히 운이 없다.

아이디어가 있으십니까?

답변

0
SELECT AES_DECRYPT(AES_ENCRYPT('blah blah blah','1234'), '1234') as test 

출력으로 2 진 문자열을 반환 중입니다. 문자열로 변환하면 어쩌구 저쩌구. 온라인 16 진수 - 2 진 변환기를 사용하여이를 검증 할 수 있습니다. GUI 도구의 텍스트로 설정해야합니다.

+0

내가 온라인 이진 변환기를 사용하여 문자열 변환 시도했지만 모든 오류를 줄 :

그래서이 작동하는 것 같다 일. 그것을 별도로 변환하지 않고도 텍스트로 반환 할 수있는 방법이 있어야하지 않습니다. – Ahmed

+0

확인이 필요해 보입니다. SELECT CAST (AES_DECRYPT (AES_ENCRYPT ('blah blah blah', '1234') ' 1234 ') AS CHAR (150)) – Ahmed

+0

변환하려면이 링크를 사용하십시오. http://string-functions.com/hex-string.aspx – Jack

0

그래서 mysql 커맨드 라인 클라이언트를 사용하지 않는 한 CAST를 사용해야 할 것 같습니다.

SELECT CAST(AES_DECRYPT(AES_ENCRYPT('blah blah blah','1234'), '1234') AS CHAR (150))