2017-05-17 8 views
5

मैं वर्तमान में नोडजेएस के साथ डेटा को एन्क्रिप्ट करने की कोशिश कर रहा हूं, मैंने नोड एपीआई दस्तावेज़ों में पढ़ा है कि createCipherrecommended नहीं है।नोडज बनाते हैं सिफर बनाम सिफरिव

crypto.createCipher के कार्यान्वयन() को पचाने एल्गोरिथ्म MD5 करने के लिए सेट, एक यात्रा है, और कोई नमक के साथ OpenSSL समारोह EVP_BytesToKey का उपयोग कर कुंजी उत्पन्न हुआ है। नमक की कमी शब्दकोश हमलों के रूप में एक ही पासवर्ड हमेशा एक ही कुंजी बनाता है। कम पुनरावृत्ति गिनती और गैर-क्रिप्टोग्राफ़िक रूप से सुरक्षित हैश एल्गोरिदम पासवर्ड को बहुत तेजी से परीक्षण करने की अनुमति देता है।

OpenSSL की सिफारिश के बजाय PBKDF2 का उपयोग करने के साथ लाइन में EVP_BytesToKey यह सिफारिश की है डेवलपर्स एक प्रमुख और अपने स्वयं के crypto.pbkdf2 के प्रयोग पर चतुर्थ () और निकाले जाते हैं कि सिफ़र वस्तु बनाने के लिए crypto.createCipheriv() उपयोग करने के लिए ।

createCipher अभी भी डेटा को एन्क्रिप्ट करने के लिए एक व्यवहार्य और सुरक्षित तरीका है? क्या इस विधि को बहिष्कृत माना जाना चाहिए? क्या डेटा को संभावित रूप से डिक्रिप्ट करने के लिए एक अच्छी तरह से सूचित हमलावर के लिए यह संभव है?

createCipheriv का उपयोग कर समाधान को हमेशा createCipher से अधिक पसंद किया जाना चाहिए?

कोई अन्य विवरण या सिफारिशों की सराहना की।

उत्तर

-2

createCipheriv/createDecipheriv पाठ्यक्रम बेहतर उपयोग का उदाहरण देखने के:

const crypto = require('crypto') function encrypt(text){ var cipher = crypto.createCipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var crypted = cipher.update(text, 'utf8', 'hex') crypted += cipher.final('hex') return crypted } function decrypt(text){ var decipher = crypto.createDecipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var dec = decipher.update(text, 'hex', 'utf8') dec += decipher.final('utf8') return dec }

+1

ऐसा क्यों है बेहतर है? – andrsnn

+0

iv - https://en.wikipedia.org/wiki/Initialization_vector के लिए खड़ा है – IvanM

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