2014-09-04 4 views
4

노드로 데이터를 암호화하고 RNCryptor로 해독하는 데 문제가 있습니다. 내 이해는 RNCryptor가 특별한 데이터 형식을 사용한다는 것입니까? 다음과 같이node.js에서 암호화하고 RNCryptor로 해독하는 방법

cryptotext를 생성하는 중입니다

var crypto = require('crypto'); 
var cipher = crypto.createCipher('aes-256-cbc','InmbuvP6Z8'); 
var text = "123|123123123123123"; 
var crypted = cipher.update(text,'utf8','base64'); 
crypted += cipher.final('base64'); 

을 그리고는 다음과 같이 해독 해요 : 내가이 일을 생각하고 어떻게

[RNDecryptor decryptData:plainText withPassword:password error:&error]; 

를? 현재 해독하려고하면 빈 NSData 및 오류가 발생합니다.

답변

0

예, RNCryptor는 암호화 된 데이터를 자체 형식으로 출력합니다. 자신의 암호화 코드로이 포맷을 만들고 (동일한 암호화 매개 변수를 사용하는 경우) JNCryptor에 전달하여 해독 할 수 있습니다. 다음

RNCryptor 포맷 버전 3

, 제 34 바이트이다 :

  • 바이트 [0] 버전이다 (3).
  • 바이트 [1]은 암호 또는 키 사용 여부를 정의합니다 (암호는 1, 키는 0).
  • 바이트 [2-9] 암호화 소금을 운반하십시오.
  • 바이트 [10-17] HMAC 염을 나른다.
  • 바이트 [18-33] IV를 수행하십시오.

암호화 된 암호문이옵니다.

그런 다음 마지막 32 바이트는 암호문에 대해 (SHA256) HMAC를 보유합니다.

사양은 여기에 있습니다 : https://github.com/RNCryptor/RNCryptor-Spec/blob/master/RNCryptor-Spec-v3.md

0

RNCryptor 그냥 암호화 이상, 인증, 암호 키 유도, 버전 관리 및 임의 IV를 포함한 "스택"을 확보 전체입니다. 암호화가 암호화 부분 일 뿐이므로 호환성이 없습니다.

간단한 암호 해독 방법으로 암호화하거나 변경하려면 RNCryptor를 사용하십시오. 질문에는 commoncrypto 태그가 있고 암호화 코드는 Swift (언어 태그가 없음)처럼 보이기 때문에 Objective-C에서 Common Crypto를 사용하여 암호 해독을 고려하십시오. 예제 코드는 SO answer을 참조하십시오.