2013-08-18 3 views
2

CryptoJS 및 iOS에서 PBKDF2 결과가 다릅니다. 여기CryptoJS 및 iOS에서 PBKDF2 결과가 다릅니다.

내 코드

NSMutableData *key = [NSMutableData dataWithLength:kCCKeySizeAES256]; 

NSString *password = @"gf8uny"; 
NSData*salt =[NSData dataFromBase64String:@"2mnfpLsa+5I="]; 

int result = CCKeyDerivationPBKDF(kCCPBKDF2,   // algorithm 
            password.UTF8String,    // password 
            password.length,     // passwordLength 
            salt.bytes,       // salt 
            salt.length,      // saltLen 
            kCCPRFHmacAlgSHA1,        // PRF 
            1000,     // rounds 
            key.mutableBytes,   // derivedKey 
            key.length);     // derivedKeyLen 

NSString *sKey= [key base64EncodedString]; 
NSLog(@"key%@", sKey); 
// output AjHjVAwHCpF1SnNDN6ri9ms7ig88VFBPwRVRMppBgnU= 

누군가가 도와 드릴까요

CryptoJS

var key= CryptoJS.PBKDF2("gf8uny", "2mnfpLsa+5I=", { keySize: 256/32, iterations: 1000 }); 
console.log(key.toString(CryptoJS.enc.Base64)); 
// console output ANepH98DqZHtMkkVrIk/CNmfykVPfEFpoax2PF8z5k8= 

아이폰 OS

입니까? 내가 뭘 잘못하고있어?

감사

코드의 자바 스크립트 버전에서

답변

0

는 소금은이 자바 스크립트 문자열을하지 객체 WordArray해야한다. 기본적으로 두 가지 예에서 소금은 다르므로 두 가지 결과가 나옵니다. 내가 무슨 말을하고 무엇을 확인하려면

는, 브라우저에서 다음 코드 조각을 시도 자바 스크립트 콘솔 : 염도 본질적으로 다르기 때문에 위의 코드, 키 1과 키 2에서

saltWArray = CryptoJS.lib.WordArray.random(128/8); 
saltString = saltWArray.toString(); // same salt but in String format 

var key1 = CryptoJS.PBKDF2("password", saltWArray, { keySize: 512/32, iterations: 300 }); 
var key2 = CryptoJS.PBKDF2("password", saltString, { keySize: 512/32, iterations: 300 }); 

는 다를 수 있습니다 소금 함량은 같지만.

관련 문제