2013-08-08 5 views
5

मैं कोड निम्नलिखित है -एन्क्रिप्शन फ़ंक्शन विभिन्न उत्पादन हर

import org.jasypt.util.text.BasicTextEncryptor; 

public static void main(String[] args) { 
    BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); 
    textEncryptor.setPassword("kshitiz"); 

    String cipherText = textEncryptor.encrypt("my_secret"); 
    System.out.println(cipherText); 
} 

हर बार जब मैं इसे चलाने के उत्पादन अलग है -

1 रन - 7vZzcsVFortOUf4yLyQ9xSEUM2pKSXAs

2 रन - Z3YDxfPpubGAQMpr+5MAKR5P09mAJ7Wd

3 रन - kVGIGcCEXZDFJnV/n0lxyFN5WW7dWMT7

सभी आउटपुट सही हैं क्योंकि उन्हें डिक्रिप्ट करने से मुझे my_secret मिलता है।

ऐसा कैसे है?

उत्तर

3

शायद यह यादृच्छिक चतुर्थ या यादृच्छिक पैडिंग का उपयोग कर रहा है। कुछ हमलों के तहत सुरक्षा के लिए यह वास्तव में महत्वपूर्ण है लेकिन इसके परिणामस्वरूप एक ही संदेश के लिए अलग-अलग सिफरटेक्स होंगे।

+2

यह यादृच्छिकता वास्तव में सुरक्षा के लिए बहुत महत्वपूर्ण है। अन्यथा सादे पाठ के बारे में बहुत सारी जानकारी लीक हो गई है। – ntoskrnl

4

विधि के दस्तावेज़ीकरण से कॉपी किया गया।

एन्क्रिप्शन ऑपरेशन करने के लिए लागू तंत्र पीकेसीएस # 5: पासवर्ड-आधारित क्रिप्टोग्राफी मानक में वर्णित हैं।

यह एन्क्रिप्टर प्रत्येक एन्क्रिप्शन ऑपरेशन के लिए नमक का उपयोग करता है। नमक का आकार इस्तेमाल होने वाले एल्गोरिदम पर निर्भर करता है। इस नमक का उपयोग एन्क्रिप्शन कुंजी बनाने के लिए किया जाता है, और यदि एक यादृच्छिक जनरेटर द्वारा उत्पन्न किया जाता है, तो इसे परिणामों की शुरुआत में अनएन्क्रिप्टेड भी जोड़ा जाता है ताकि एक डिक्रिप्शन ऑपरेशन किया जा सके।

एक यादृच्छिक नमक जनरेटर प्रयोग किया जाता है, तो एक ही संदेश के लिए दो एन्क्रिप्शन परिणाम हमेशा अलग होगा (यादृच्छिक नमक संयोग के मामले को छोड़कर)। यह एक समय में डेटा के सेट पर ब्रूट फोर्स हमलों को मुश्किल बनाकर और हमलावरों को एन्क्रिप्टेड डेटा के प्रत्येक अलग टुकड़े पर एक बलपूर्वक बल हमला करने के लिए मजबूर कर सुरक्षा को लागू कर सकता है।

अनिवार्य रूप से, मानक, एक क्रिप्टोग्राफिक नमक जो अनियमित क्रम में उत्पन्न होता है इस्तेमाल किया और आउटपुट स्ट्रिंग में जोड़ा जाता है करने के लिए पालन करने के लिए। यह नमक पूर्व-गणना इंद्रधनुष तालिकाओं का उपयोग करके ब्रूट फोर्स हमलों को रोकता है।

+0

मुझे यकीन नहीं है कि इस पुस्तकालय के डेवलपर्स क्रिप्टोग्राफी के बारे में कुछ जानते हैं। एक सिफर नमक नहीं लेता है। कुंजी प्रारंभिक वेक्टर से नहीं ली जानी चाहिए। इसके अलावा, इंद्रधनुष तालिका हमले केवल हैश कार्यों पर लागू होते हैं, सिफर नहीं। – ntoskrnl

+0

@ntoskml मुझे लगता है कि उन्होंने पीबीकेडीएफ से पहले पासवर्ड में नमक जोड़ा है ... और यदि उन्होंने कहा कि वे पीकेसीएस # 5 मानकों का पालन करते हैं, तो मुझे लगता है कि वे एक यादृच्छिक चतुर्थ भी उपयोग कर रहे हैं। मुझे पता है कि इंद्रधनुष सारणी केवल हैश पर लागू होती है ... लेकिन पीबीकेडीएफ के मामले में मुझे लगता है कि आप पासवर्ड की इंद्रधनुष सारणी पूर्व-गणना कर सकते हैं -> व्युत्पन्न कुंजी (माना जाता है कि फ़ंक्शन एक स्थिर IV का उपयोग करता है)। – initramfs

+0

मेरे पिछले वक्तव्य में सुधार: आरएफसी 28 9 8 दस्तावेज़ को पढ़ने पर मुझे पता चला है कि इसके पहले केडीएफ में नमक का उपयोग किया जाता है। केडीएफ (जिसे मैं पीबीकेडीएफ 2 मानता हूं) आमतौर पर व्युत्पन्न कुंजी उत्पन्न करने के लिए आंतरिक रूप से हैश फ़ंक्शन (आमतौर पर एचएमएसी-एसएचए 1) का उपयोग करता है। एक हमलावर एक क्रूर बल हमले में हैश की प्रति-गणना करके केडीएफ को बहुत तेज करने के लिए इंद्रधनुष तालिकाओं का उपयोग कर सकता है। पासवर्ड -> व्युत्पन्न कुंजी तालिकाओं को भी उत्पन्न करने का कोई उल्लेख नहीं है। इस पुस्तकालय के लेखक प्रत्येक एन्क्रिप्शन के लिए एक नई व्युत्पन्न कुंजी उत्पन्न करते हैं, इस प्रकार यह बताते हुए कि एक यादृच्छिक नमक का उपयोग किया जाता है। – initramfs

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