के साथ काम करता है सबसे पहले, मुझे यह बताकर शुरू करना है कि मैं किसी भी माध्यम से क्रिप्टोग्राफर नहीं हूं, और मैं सी कोड लिखने में बहुत अच्छा नहीं हूं, इसलिए कृपया इस सवाल का जवाब दें तो कृपया क्षमा करें स्पष्ट या उत्तर दिया गया है। मैं एक मैसेजिंग प्रोग्राम विकसित कर रहा हूं और लक्ष्य मंच पर टीएलएस का उपयोग नहीं कर सकता। नतीजतन, मुझे एईएस की तरह एक सममित पूर्व साझा कुंजी सिफर का उपयोग करके प्रत्येक संदेश को एन्क्रिप्ट करने का तरीका ढूंढना होगा।एन्क्रिप्शन प्रोग्राम जो नोडजे और एमबीटीटीएल
मैं एक अंत में एक mbedtls प्रोग्राम (जैसे एस्क्रिप्ट 2) के बीच डेटा एन्क्रिप्ट और डिक्रिप्ट करने की विधि ढूंढ रहा हूं, और दूसरे पर एक नोडज प्रोग्राम। Mbedtls, पूर्व में polarssl, एक पुस्तकालय है जो एम्बेडेड उपकरणों के लिए एन्क्रिप्शन प्रदान करता है। स्रोत कोड के साथ शामिल कुछ नमूना कार्यक्रम हैं, जैसे एस्क्रीप्ट 2, आरएसएएनक्रिप्ट, ecdsa और crypt_and_hash।
Aescrypt2 ठीक काम करता है जब जिसके परिणामस्वरूप एन्क्रिप्टेड डाटा भी aescrypt2 का उपयोग कर decrypted है, लेकिन मैं NodeJS क्रिप्टो या openssl सहित उस बात के, के लिए किसी अन्य प्रोग्राम का उपयोग डिक्रिप्ट करने के लिए aescrypt के साथ एन्क्रिप्टेड डेटा प्राप्त नहीं कर पा रहे।
echo 'this is a test message' >test.txt
aescrypt 0 test.txt test.out hex:E76B2413958B00E193
aescrypt 1 test.out test.denc hex:E76B2413958B00E193
cat test.denc
this is a test message
openssl साथ
:
openssl enc -in out.test -out outfile.txt -d -aes256 -k E76B2413958B00E193
bad magic number
कुछ नमूना नोड कोड है कि वर्तमान में
var crypto = require('crypto');
var AESCrypt = {};
AESCrypt.decrypt = function(cryptkey, iv, encryptdata) {
encryptdata = new Buffer(encryptdata, 'base64').toString('binary');
var decipher = crypto.createDecipheriv('aes-256-cbc', cryptkey, iv),
decoded = decipher.update(encryptdata, 'binary', 'utf8');
decoded += decipher.final('utf8');
return decoded;
}
AESCrypt.encrypt = function(cryptkey, iv, cleardata) {
var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv),
encryptdata = encipher.update(cleardata, 'utf8', 'binary');
encryptdata += encipher.final('binary');
encode_encryptdata = new Buffer(encryptdata, 'binary').toString('base64');
return encode_encryptdata;
}
var cryptkey = crypto.createHash('sha256').update('Nixnogen').digest(),
iv = 'a2xhcgAAAAAAAAAA',
buf = "Here is some data for the encrypt", // 32 chars
enc = AESCrypt.encrypt(cryptkey, iv, buf);
var dec = AESCrypt.decrypt(cryptkey, iv, enc);
console.warn("encrypt length: ", enc.length);
console.warn("encrypt in Base64:", enc);
console.warn("decrypt all: " + dec);
यह या तो त्रुटियों या कचरा पाठ हर बार में परिणाम है काम नहीं करता है उदाहरण के लिए। मैंने विभिन्न चीजों को भी बदलने की कोशिश की है।
मैंने -pass pass:password
तर्क का उपयोग करने के लिए इस सौ अलग-अलग तरीकों का प्रयास किया है। नोडज का उपयोग करके, मुझे या तो खराब डिक्रिप्ट त्रुटियां मिल गई हैं, या डिक्रिप्शन पर वापस बकवास बकवास हो गया है। मैंने नेट पर कई ट्यूटोरियल का पालन करने की कोशिश की है, जैसे कि this एक, और this thread से सुझाव, और बाकी सब कुछ मैं पा सकता हूं। मैंने पढ़ा है कि अलग-अलग एन्क्रिप्शन प्रोग्राम विभिन्न मानकों का उपयोग करते हैं, इसलिए प्लेटफार्मों/कार्यक्रमों/भाषाओं में संगतता हमेशा गारंटी नहीं दी जाती है, लेकिन मुझे लगता है कि कोई इस समाधान में पहले और समाधान जानता है?
मैं nodejs का उपयोग करके, aescrypt2 (या इस तरह का एक प्रोग्राम) द्वारा एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट कैसे करूं? मैं केवल सिस्टम निष्पादन कॉल का उपयोग करके इसे काम करने में सक्षम हूं और डेटा को डीक्रिप्ट/एन्क्रिप्ट करने के लिए नोड निष्पादित करने के लिए नोडक्रिप्ट 2 निष्पादित कर रहा हूं, जो आदर्श नहीं है, क्योंकि यह चीजों को काफी धीमा कर देता है। मैं aescrypt2 की तुलना में एक अलग प्रोग्राम का उपयोग करने के लिए खुला हूँ। केवल आवश्यकताएं हैं कि इसे लिनक्स पर चलाना चाहिए, openssl libs (क्योंकि वे लक्ष्य प्रणाली पर समर्थित नहीं हैं) का उपयोग नहीं कर सकते हैं, अंतरिक्ष सीमाओं के कारण कार्यक्रम छोटा और सरल होना चाहिए, और सबसे महत्वपूर्ण, एन्क्रिप्शन/डिक्रिप्शन होना आवश्यक है नोडज के साथ संगत। कोई भी सहायताकाफी प्रशंसनीय होगी।
यह सी कोड कैसा है? –
मैं वर्तमान में mbedlts एस्क्रिप्ट नमूना प्रोग्राम का उपयोग करने की कोशिश कर रहा हूं: https://github.com/ARMmbed/mbedtls/blob/development/programs/aes/aescrypt2.c, और यह किसी भी नोड क्रिस्टो पुस्तकालयों के साथ काम नहीं करता है। मैं उस स्रोत की तलाश में हूं जो इसे करता है, या इसे काम करने का एक तरीका है। –
धीमा, और कोड लिखने के तरीके पर कुछ शोध करें। –