2012-10-12 2 views
1

BlowsfishJ Java 구현 (BlowfishJ Javadoc)과 dlow Blowfish JavaScript 구현 (dren Blowfish page)을 연관 짓는 데 몇 가지 문제가 있습니다.BlowfishJ Java 구현을 Drain 복어 자바 스크립트 구현과 일치시킵니다. 8 바이트 이후의 암호화 값이 다릅니다.

Java 측에서 Blowfish CBC를 사용하고 있습니다. 0이 IV이고 키가 somekey입니다. 일반 텍스트는 WillThisEQ입니다.

JavaScript 쪽에서 dren의 구현은 CBC와 제로 IV도 사용하고 있습니다. 키가 이고 키가이고 평문이 입니다. WillThisEQ입니다. 암호문에 대한

var bf = new Blowfish('some key'); 
var ciphertext = bf.encrypt('WillThisEQ'); 
var plaintext = bf.decrypt(ciphertext); 

모두 구현 (WillThis)의 첫 번째 8 바이트 일치 :

여기에 자바 스크립트 코드입니다. 그러나 후속 바이트는 일치하지 않습니다 (EQ000000). IV는 첫 번째 블록 (Block Cipher Modes Wikipedia page)에 포함됩니다. 그래서, 나는 그것이 문제라고 생각하지 않는다.

이 두 구현을 어떻게 일치시킬 수 있습니까?

도움을 주셔서 감사합니다.

답변

1

당신의 대답은 dren BlowFish page you linked to의 맨 위에 있습니다 :

당신이 8 바이트 이상 아무것도 암호화 할 경우 자신의 암호 블록 체인을 impliment 필요

.

아니요, CBC가 아닙니다. ECB version of BlowfishJ을 사용해 볼 수도 있지만 the security is much worse입니다.

+0

대단히 감사합니다. +1 독해력. 그래서 저는 JS를 위해 제 자신의 CBC를 써야 할 것입니다. 이것이 그의 구현이 진지하게 사용되지 않는 것이 어야만합니다. BlowfishJ의 ECB 버전이 그의 구현과 함께 작동합니까? – user717236

+1

@ user717236 페이지가 함께 작동하는지 여부는 명확하지 않지만 한 번 사용해 볼 가치가 있습니다. CBC가 그렇게 복잡하지는 않은 것처럼 보입니다. IV를 각 블록에 특별한 값으로 설정하기 만하면됩니다. –

+0

그래, 내 자신의 CBC를 써야 겠어. 나는 ECB 버전이 동일하지 않다는 것을 확인했다. JS 구현은 처음 8 바이트 블록 만 암호화하고 ECB를 사용하지 않습니다. – user717236