2012-08-09 19 views
10

जावास्क्रिप्ट या Jquery में यह कैसे करें?स्ट्रिंग के लिए शब्द ऐरे

2 चरणों में सुझाव दें: एकल बाइट सरणी के लिए

1.- वर्ड सरणी।

2.- बाइट ऐरे स्ट्रिंग के लिए।

हो सकता है कि यह मदद कर सकते हैं:

function hex2a(hex) { 
    var str = ''; 
    for (var i = 0; i < hex.length; i += 2) 
     str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); 
    return str; 
} 
+0

बाइट सरणी से आपका क्या मतलब है? –

+1

पहला प्रश्न: आपको इसकी आवश्यकता क्यों है? जो भी आप पूरा करने की कोशिश कर रहे हैं उसे हासिल करने के लिए लगभग निश्चित रूप से एक बेहतर तरीका है। – Blazemonger

+0

@ ब्लेज़मोंगर क्रिप्टोजेएस का निरीक्षण करना चाहते हैं, यह एक शब्द ऐरे में हैश/साइफर देता है। – jacktrades

उत्तर

18

आप क्या हासिल करने की कोशिश कर रहे हैं पहले से ही CryptoJS में कार्यान्वित किया जाता। documentation से:

आप वर्डअरे ऑब्जेक्ट को स्पष्ट रूप से टूस्ट्रिंग विधि को कॉल करके और एन्कोडर पास करके अन्य प्रारूपों में परिवर्तित कर सकते हैं।

var hash = CryptoJS.SHA256("Message"); 
alert(hash.toString(CryptoJS.enc.Base64)); 
alert(hash.toString(CryptoJS.enc.Hex)); 


ईमानदारी से मुझे पता नहीं है तुम क्यों है कि अपने आप को लागू करना चाहते हैं ... लेकिन अगर आप पूरी तरह से 2 कदम आप का उल्लेख में "मैन्युअल" यह सब करने की ज़रूरत है, तो आप कुछ इस तरह की कोशिश कर सकते :

function wordToByteArray(wordArray) { 
    var byteArray = [], word, i, j; 
    for (i = 0; i < wordArray.length; ++i) { 
     word = wordArray[i]; 
     for (j = 3; j >= 0; --j) { 
      byteArray.push((word >> 8 * j) & 0xFF); 
     } 
    } 
    return byteArray; 
} 

function byteArrayToString(byteArray) { 
    var str = "", i; 
    for (i = 0; i < byteArray.length; ++i) { 
     str += escape(String.fromCharCode(byteArray[i])); 
    } 
    return str; 
} 

var hash = CryptoJS.SHA256("Message"); 
var byteArray = wordToByteArray(hash.words); 
alert(byteArrayToString(byteArray)); 

wordToByteArray समारोह पूरी तरह से काम करना चाहिए, लेकिन ध्यान रखें कि byteArrayToString लगभग किसी भी मामले में अजीब परिणाम देगा हो। मुझे एन्कोडिंग के बारे में बहुत कुछ पता नहीं है, लेकिन एएससीआईआईआई केवल 7 बिट्स का उपयोग करता है, इसलिए आपको पूरे बाइट को एन्कोड करने का प्रयास करते समय एएससीआईआई अक्षर नहीं मिलेगा। तो मैंने कम से कम उन सभी अजीब वर्णों को प्रदर्शित करने में सक्षम होने के लिए escape फ़ंक्शन जोड़ा। ;)

मैं आपको सलाह देता हूं कि आप क्रिप्टोजेएस पहले ही कार्यान्वित किए गए कार्यों का उपयोग करें या केवल अपने विश्लेषण के लिए बाइट सरणी (इसे स्ट्रिंग में परिवर्तित किए बिना) का उपयोग करें।

संबंधित मुद्दे