2016-12-20 6 views
-1

문자열을 암호화해야하지만 원하는 출력을 거의 얻을 수 있습니다. 온라인에서 패딩과 관련이 있고 iv_vector와 나머지 8 바이트를 동일하게 읽습니다. txtToEncrypt로 길이.NodeJS에서 Blowfish로 암호화 문자열

나는이 라이브러리 누군가가 알려 주시기 바랍니다 단서가있는 경우 https://github.com/agorlov/javascript-blowfish

// function in Java that I need 
// javax.crypto.Cipher.getInstance("Blowfish/CBC/NoPadding").doFinal("spamshog") 


var iv_vector = "2278dc9wf_178703"; 
var txtToEncrypt = "spamshog"; 
var bf = new Blowfish("spamshog", "cbc"); 

var encrypted = bf.encrypt(txtToEncrypt, iv_vector); 

console.log(bf.base64Encode(encrypted)); 

Actual output: /z9/n0FzBJQ= 
What I need: /z9/n0FzBJRGS6nPXso5TQ== 

을 사용하고 있습니다. 나는 하루 종일 구글 검색했다. 여기에 마지막으로

+0

당신이지고있는 이상한 출력은 무엇과 NodeJS에 문자열을 암호화하는 것입니다? – Jason

+0

이것은/z9/n0FzBJQ = –

+0

입니다. 찾고있는 출력과 분명히 관련되어 있으므로 사용중인 모듈의 세부 사항처럼 보입니다. 나중에 잠시 멈춰서라도 시간이있을 때 백엔드 코드를보고 단서가 있는지 살펴 보겠습니다. – Jason

답변

0

, 어떻게 복어

// Module crypto already included in NodeJS 
var crypto = require('crypto'); 

var iv = "spamshog"; 
var key = "spamshog"; 
var text = "2278dc9wf_178703"; 
var decipher = crypto.createCipheriv('bf-cbc', key, iv); 
decipher.setAutoPadding(false); 
var encrypted = decipher.update(text, 'utf-8', "base64"); 
encrypted += decipher.final('base64'); 

console.log(encrypted); 

Returns: /z9/n0FzBJRGS6nPXso5TQ==