2014-09-18 4 views
1

Google 클로저 - 라이브러리에서 작업 할 때 다음과 같은 문제가 있습니다.goog.crypt.base64.decodeStringToByteArray (string)가 잘못된 바이트 배열을 반환하는 이유는 무엇입니까?

var temp1 = "heyeveryone"; //sample string 
var decoded1 = goog.crypt.base64.decodeStringToByteArray(temp1); 
var sha512 = new goog.crypt.Sha512(); 
sha512.update(decoded1); 
//fine... 

'값 decoded1'decoded'and '한 번 봐 가지고, 모두가 나에게 바이트 배열과 같이 : 문자열을 변경

var temp = "ks/ZUl6L5v77y7BHymYrFw===="; //sample string 
var decoded = goog.crypt.base64.decodeStringToByteArray(temp); 
var sha512 = new goog.crypt.Sha512(); 
sha512.update(decoded); 
//Error: message must be a byte array 

코드 실행을합니다.

는 [146, 207, 217, 82, 94, 139, 230, 254, 251, 203, 176, 71, 202, 102, 43, 23, 260]

decoded1 [133 복호화 236, 158, 189, 234, 242, 162, 119]

그래서 여기에 무슨 문제가 있습니까? 왜 'decoded1'이 유효하고 '디코딩'되지 않았습니까?

감사합니다.

+1

아마도 ""ks/ZUl6L5v77y7BHymYrFw ==== "'가 유효한 base64 인코딩 문자열이 아니기 때문에? 너 어디서 났니? – Bergi

+0

네가 맞아, 네 의견에 감사드립니다! 서버 측 응용 프로그램에서 문자열을 얻었으므로 클라이언트 측에서 일부 작업을 수행해야합니다. 이 버그가 수정되어 프로그램이 올바르게 작동합니다. 감사합니다 – crypton00b

답변

1

첫 번째 배열은 이 아니며 바이트 배열 - 260 (최종 값)은 바이트 값이 아닙니다. 인코딩 된 값이 255보다 크지 않은지 확인하십시오.

+0

당신이 옳습니다, 그것이 문제였습니다! 그 이유는 @Bergi가 언급했듯이 잘못된 문자열이 있다는 것입니다. 감사합니다. – crypton00b

+1

위의 버그를'decodeStringToByteArray'에서 살펴볼 것입니다. 잘못된 값으로 쓸모없는'=='문자 만 디코딩하면 안됩니다. –

관련 문제