2014-06-18 8 views
0

프런트 엔드에서 $ .ajax 메서드를 사용하여 자격 증명을 보내고 있으며 crypto.js를 사용하여 자격 증명을 암호화하는 데 사용했습니다.파이썬에서 AES 암호 해독

자바 스크립트 코드

var encrypted = CryptoJS.AES.encrypt("Message", "This is a key123", { mode: CryptoJS.mode.CFB}); 

$.ajax({ 
     type: "POST", 
     url: $SCRIPT_ROOT + "/test", 
     contentType: "application/json", 
     data:JSON.stringify({key:encrypted.toString()}), 
     dataType: "json", 
     success: function (response) { 
      alert(response); 
     } 
    }); 

내가 파이썬 플라스크에 후단 측에 해독 할 동일한 자격. 암호화 및 암호 해독,하지만 인쇄의가 울부 짖는 소리 문자열을 인쇄 할 때

파이썬 코드는

data = request.json 
key = data["key"] 
obj2 = AES.new('This is a key123', AES.MODE_CFB) 
s = obj2.decrypt(key) 
print s 

나는 동일한 모드를 사용하고 있습니다.

�Qg%��qNˮ�Ŵ�M��ĦP� 
        "~�JB���w���#]�v?W 
는 는

은 누구도 날 프런트 엔드 & & 백 엔드에서 암호화 해독을 할 수있는 더 좋은 방법을 제안 할 수 있습니다?

제가
>>> from Crypto.Cipher import AES 
>>> obj = AES.new('This is a key123', AES.MODE_CFB) 
>>> message = "The answer is no" 
>>> ciphertext = obj.encrypt(message) 
>>> ciphertext 
'\x1f\x99%8\xa8\x197%\x89U\xb6\xa5\xb6C\xe0\x88' 
>>> obj2 = AES.new('This is a key123', AES.MODE_CFB) 
>>> obj2.decrypt(ciphertext) 
'The answer is no' 

가 잘 작동 파이썬에서만 동일한 암호화 복호를 시도하지만 자바 스크립트를 사용하여 프론트 - 엔드 데이터를 암호화 할 내가 파이썬 같은 복호화 방법을 사용할.

+0

'encrypted.toString()'은 암호문을 문자열로 변환하는 나쁜 방법입니다. Base64 또는 HEX 텍스트 표현을 사용하고 그에 따라 JS 및 파이썬 코드로 변환하십시오. –

+0

@OlegEstekhin이 나에게 어떤 실례를 제안 할 수 있습니까? – Jaydipsinh

+0

@OlegEstekhin 내 질문을 업데이트했습니다. – Jaydipsinh

답변

0

CryptoJS.AES.encrypt에 전달한 문자열은 Python 코드에서와 같이 키 (utf8 인코딩 후)로 직접 사용되지 않지만 대신에 어떤 방식 으로든 키를 파생시키는 데 암호로 사용됩니다. 참조 : https://code.google.com/p/crypto-js/#The_Cipher_Input.

출력 또한 인쇄 가능한 문자열로 인코딩되며 파이썬 코드에 필요한 원시 바이트 문자열을 나타내지 않습니다. 참조 : https://code.google.com/p/crypto-js/#The_Cipher_Output.

+0

나는 그 문서를 읽었지 만 자바 스크립트 쪽과 파이썬 쪽에서 어떻게 사용하는지 모르겠습니다. 이 기사에 좋은 기사 나 실례를 제안 해 주시겠습니까? – Jaydipsinh

+0

업데이트 된 질문을 확인하십시오 – Jaydipsinh

+0

큰 규모로 어떤 문제를 해결하려고합니까? https를 통해 모든 데이터를 검색하고 게시하는 것과 같이 기밀 요구 사항을 충족하고 내가 가진 것으로 생각되는 몇 가지 보안 문제를 수정하는 것 같습니다. @Jaydipsinh – Perseids