2011-12-16 11 views
8

क्या कोई सुझाव दे सकता है कि मैं एक प्रतिस्थापन सिफर शैली कैसे प्राप्त कर सकता हूं; वीबीए में एन्क्रिप्ट और डिक्रिप्ट फ़ंक्शन। मुझे सराहना है कि हैशिंग को बेहतर तरीका माना जाता है लेकिन मुझे उलटा एन्क्रिप्शन चाहिए। बहुत धन्यवाद।एमएस एक्सेस वीबीए सबस्टिट्यूशन सिफर एन्क्रिप्ट/डिक्रिप्ट

+0

क्या आपके पास पहले से कोई ऐसा नहीं है [आपने पोस्ट करने का प्रयास किया] (http://stackoverflow.com/questions/8534659/vba-ms-access-substitution-cipher)? – Deanna

+0

@ दीना एज़ जीन ने कहा कि मैंने इसे पहले पोस्ट किया था, लेकिन स्टैक ओवरफ्लो के नियमों को अनदेखा कर दिया है, यह कहना बेहतर है कि लोग उत्तर दे रहे हैं और अन्य भविष्य में इसे Google खोज आदि के माध्यम से भविष्य में ढूंढ पाएंगे –

उत्तर

2

मेरे प्रश्न के संदर्भ में दिए गए सभी उत्तरों के लिए बहुत धन्यवाद, यह देखना अच्छा लगता है कि अलग-अलग दृष्टिकोण हैं, यह कल मैंने सुबह कोड किया था। यह ऊपरी & लोअरकेस अक्षरों दोनों के लिए एक अलग सिफर कीवर्ड/वाक्यांश का उपयोग करने की अनुमति देता है, मैंने इस उदाहरण में 'ज़ेबरा' का उपयोग किया है, यह आरओटी 13 सिफर के साथ दूसरा पास भी चलाता है। एन्क्रिप्शन विधि:

Public Function Encrypt(strvalue As String) As String 

Const LowerAlpha As String = "abcdefghijklmnopqrstuvwxyz" 
Const LowerSub  As String = "zebrascdfghijklmnopqtuvwxy" 'zebras 
Const UpperAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
Const UpperSub  As String = "ZEBRASCDFGHIJKLMNOPQTUVWXY" 'ZEBRAS 

Dim lngi   As Long 
Dim lngE   As Long 
Dim strEncrypt  As String 
Dim strLetter  As String 

If strvalue & "" = "" Then Exit Function 

For lngi = 1 To Len(strvalue) 

    strLetter = Mid(strvalue, lngi, 1) 

    Select Case Asc(strLetter) 

     Case 65 To 90 'Uppercase 
      'Find position in alpha string 
      For lngE = 1 To Len(UpperAlpha) 
       If Mid(UpperAlpha, lngE, 1) = strLetter Then GoTo USub 
      Next 
USub: 
      strEncrypt = strEncrypt & Mid(UpperSub, lngE, 1) 

     Case 97 To 122 'Lowercase 
      'Find position in alpha string 
      For lngE = 1 To Len(LowerAlpha) 
       If Mid(LowerAlpha, lngE, 1) = strLetter Then GoTo LSub 
      Next 
LSub: 
      strEncrypt = strEncrypt & Mid(LowerSub, lngE, 1) 

     Case Else 'Do not substitute 

      strEncrypt = strEncrypt & strLetter 

    End Select 

Next 

'Now pass this string through ROT13 for another tier of security 

For lngi = 1 To Len(strEncrypt) 
    Encrypt = Encrypt & Chr(Asc(Mid(strEncrypt, lngi, 1)) + 13) 
Next 

End Function 

और यह डिक्रिप्शन है कि यह साथ चला जाता है:

Public Function Decrypt(strvalue As String) As String 

Const LowerAlpha As String = "abcdefghijklmnopqrstuvwxyz" 
Const LowerSub  As String = "zebrascdfghijklmnopqtuvwxy" 'zebras 
Const UpperAlpha As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
Const UpperSub  As String = "ZEBRASCDFGHIJKLMNOPQTUVWXY" 'ZEBRAS 

Dim lngi   As Long 
Dim lngE   As Long 
Dim strDecrypt  As String 
Dim strLetter  As String 

If strvalue & "" = "" Then Exit Function 

'Reverse the ROT13 cipher 

For lngi = 1 To Len(strvalue) 
    strDecrypt = strDecrypt & Chr(Asc(Mid(strvalue, lngi, 1)) - 13) 
Next 

'Now reverse the encryption 

For lngi = 1 To Len(strDecrypt) 

    strLetter = Mid(strDecrypt, lngi, 1) 

    Select Case Asc(strLetter) 

     Case 65 To 90 'Uppercase 
      'Find position in sub string 
      For lngE = 1 To Len(UpperSub) 
       If Mid(UpperSub, lngE, 1) = strLetter Then GoTo USub 
      Next 
USub: 
      Decrypt = Decrypt & Mid(UpperAlpha, lngE, 1) 

     Case 97 To 122 'Lowercase 
      'Find position in sub string 
      For lngE = 1 To Len(LowerSub) 
       If Mid(LowerSub, lngE, 1) = strLetter Then GoTo LSub 
      Next 
LSub: 
      Decrypt = Decrypt & Mid(LowerAlpha, lngE, 1) 

     Case Else 'Do not substitute 

      Decrypt = Decrypt & strLetter 

    End Select 

Next 

End Function 

मुझे आशा है कि कोडिंग जो लोग VBA कोडिंग के साथ विशाल अनुभव की जरूरत नहीं है और यह कर सकते हैं के लिए पालन करने के लिए बहुत आसान है सीधे पृष्ठ से उठाया जाना चाहिए; लेकिन फिर भी अन्य सभी उत्तरों के लिए धन्यवाद।

+0

यह हास्यास्पद सीमा के साथ एक एन्क्रिप्शन बहुत कमजोर (बहाना) है। आरसी 4 की तरह कुछ मजबूत कोशिश करें जिसे कम लाइन-कोड में कार्यान्वित किया जा सकता है। यहां देखें: http://stackoverflow.com/questions/7025644/vb6-encrypt-text-using-password – wqw

+1

मुझे लगता है कि उप सिफर अब काफी पुराने हैं और सर्वश्रेष्ठ नहीं मानते हैं, लेकिन मुझे इस मामले के लिए बस कुछ आसान चाहिए, आपको मिल गया हालांकि स्वीकार करने के लिए, यह एन्क्रिप्टेड स्ट्रिंग बहुत अच्छी लगती है "एस € 4-XY^-x, ~ -zRrur € r | - € pz € -px" - "px-" | - ~ | zVV † -z ~ | 9- आर € -r - =, ~ -p => | " अगर किसी के पास कोई समय है तो उसे विस्फोट डिक्रिप्ट करें, मैं देखना चाहता हूं कि वास्तव में यह कितना आसान है। :) –

2

वहाँ एक सरल उदाहरण here है कोशिश कर सकते हैं या आप भी सरल ROT13 सिफर का उपयोग कर सकते हैं।

ये छोटे टेक्स्ट को अस्पष्ट करने के लिए उपयोगी हैं, लेकिन मैं उन्हें उन चीज़ों के लिए उपयोग नहीं करता जो वास्तव में सुरक्षित रखने की आवश्यकता होती है।

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