이것은 이상한 질문입니다. 그러나 저는 지금 몇 시간 동안이 작업을 해왔으며 많은 진전을 이루지 못했습니다. 여기에있는 누군가가 조언을 해줄 수 있기를 희망합니다 ...(Not-so) 똑똑한 키가 노드 JS의 SHA512 Hmac에 문제를 일으키고 있습니다
나는 PHP에서 노드로 스크립트를 이식하고 있습니다. 나도 같은 텍스트를 주어진 때이 기능은 동일한 해시를 생산하는 것을 확인했다
var hash = crypto.createHmac("sha512", key);
hash.update(text);
return hash.digest("hex");
: 나는 암호화 모듈을 사용하여 노드에서이 문제를 재현
hash_hmac('sha512', $text, $key);
: PHP 스크립트는이 기능을 사용합니다 키.
제외...
이PHP에서 키에 사용되는 문자열이 비슷합니다 : 내가 좋아하는 자바 스크립트에서이 문제를 재현하는 시도
define("SITE_KEY", "
__
, ,' e`---o
(( ( | ___,'
\\~-------------------------------' \_;/
( /
/) ._______________________________. )
((( (((
``-' ``-'
");
(묻지 마세요) 그래서 :
var key = "\
__\
, ,' e`---o\
(( ( | ___,'\
\\\\~-------------------------------' \\_;/\
( /\
/) ._______________________________. )\
((( (((\
``-' ``-'\
\
";
그러나 작동하지 않습니다. (나는 linebreaks와 관련이 있다고 가정한다).
도 작동하지 않습니다 다음과 같이 "\ 연구 \ n을"또는 "\ n"과 줄 바꿈을 교체 :이 문제를 해결하는 방법에 대한
var key = "\r\n __\r\n , ,' e`---o\r\n (( ( | ___,'\r\n \\\\~-------------------------------' \\_;/\r\n ( /\r\n /) ._______________________________. )\r\n ((( (((\r\n ``-' ``-'\r\n\r\n";
제안? (개를 없애는 것은 불행히도 옵션이 아닙니다.)
도움을 주셔서 감사합니다.
이것은 스택 오버플로에 대한 새로운 좋아하는 질문입니다. – Bill
실제 키와 붙여 넣은 키의 차이는 중간에 "긴 개가 길다"라는 실제 키가 있다는 것입니까? – hobbs
당신이 말했듯이 열쇠는 똑같은 것은 아니지만 두 개의 개 사이에는 문자 그대로의 백 슬래시가 다릅니다. PHP에서 개 꼬리 근처의 \\는 하나의 리터럴 백 슬래시로 해석됩니다.개 귀 근처의 \ _는 리터럴 백 슬래시 및 밑줄로 해석됩니다. base64를 사용해보십시오! :-) – MrTrick