일부 REST 웹 서비스를 사용하는 애플리케이션을 개발 중입니다. 기술 문서에 요청시 일부 문자열의 SHA256 해시를 전달해야한다고 나와 있습니다. (문서)에서 예시적인 요청 루비와 C 사이의 SHA 해시 차이점 #
문자열 :HN-Rw2ZHYwllUYkklL5Zo_7lWJVkrbShZPb5CD1expires = 1893013926label [0] = 모든/somestatistics = 1D, 2D, 7D, 28D, 30D, 31D, lifetimestatus = UPL 해시에
digest = Digest::SHA256.digest(string_to_sign) signature = Base64::encode64(digest).chomp.gsub(/=+$/, '')
결과 :
하는
를 실행 한 후 livetitle = 문서는 루비 개발자를위한 것입니다로 17,451,515,
YRYuN2zO + VvxISNp/vKQM5Cl6Dpzoin7mNES0IZJ06U
이 예는, 루비입니다.
byte[] rawHash = sha256.ComputeHash(rawRequest, 0, rawRequest.Length);
string friendlyHash = Convert.ToBase64String(rawHash);
및 후행 "="표시, 내가 얻을 제거 : 나는 C#에서와 정확히 동일한 문자열 내 응용 프로그램을 개발하고 있어요
나는 실행할 때
Vw8pl/KxnjcEbyHtfNiMikXZdIunysFF2Ujsow8hyiw
따라서 응용 프로그램이 실행되지 않아 서명 불일치 오류가 발생합니다.
해싱 이전의 바이트 배열로 문자열을 변환하는 동안 인코딩을 변경해 보았습니다. 아무 것도 변경되지 않았습니다.
아이디어가 있으십니까?
문자열을 자르지 않았습니까? 어딘가에있을 수 있습니다. – stimms
사용중인 문자열을 보내 주실 수 있습니까? 루비에서 결과를 복제 할 수 없습니다. –
Rayan, 루비에서 해시 한 결과는 무엇입니까? –