2010-08-17 19 views
5

में संग्रहीत पासवर्ड एन्क्रिप्ट/डिक्रिप्ट करना मेरे पास एक साधारण बैश स्क्रिप्ट स्वचालित कार्य है जिसके लिए पासवर्ड-आधारित प्रमाणीकरण की आवश्यकता होती है। वर्तमान में मैं सादे पाठ में साख की दुकान:कॉन्फ़िगरेशन फ़ाइल

$ cat ~/.myconfig 
username=foo 
password=bar 

जाहिर है कि बुरा है - तो मुझे आश्चर्य है कि एन्क्रिप्ट/मेरी सार्वजनिक/निजी कुंजी युग्म का उपयोग कर पासवर्ड डिक्रिप्ट करने के लिए एक आसान तरीका है कि क्या वहाँ। एन्क्रिप्शन के लिए अभी तक एक और पासवर्ड का उपयोग करना ज्यादा लाभ नहीं होगा, इसलिए मैं इसे बहुत अधिक स्वचालित रूप से करना चाहता हूं।

मैं बहुत शोध किया है (यहाँ और दूसरी जगहों के आसपास), लेकिन इस पर जिस तरह से बाहर मेरी गहराई का हूँ ...

उत्तर

3

आप md5 राशि में पासवर्ड स्टोर कर सकते हैं, इससे पहले कि कुछ नमक जोड़ें।

बनाएँ:

\#!/bin/bash 

salt=12345_ 

protocol=sha1sum 

read -p "Enter login: " username 
read -p -s "Password: " pass1 
read -p -s "Repeat: pass2 

if [ "pass1 != pass2" ]; then echo "Pass missmatch"; exit 1; else password=pass1; fi 

echo -en "$username " >> ./mypasswd 
echo -e "${salt}${password} | $protocol | awk '{print $1}'" >> ./mypqsswd 

पढ़ने:

\#!/bin/bash 
salt=12345_ #(samesalt) 
protocol=sha1sum 

read -p "Enter username: " username 
read -p -s "Enter password: " password 

if [ `grep $username ./mypasswd | awk '{print $2}' != `echo -e "`echo ${salt}${password} | $protocol | awk '{print $2}'`" ]; then echo -e "wrong username or password"; exit 127; else echo -e "login successfull"; fi 

वहाँ अपने कोड है।

+0

MD5 असुरक्षित है। इसके बजाय एसएचए का प्रयोग करें। ('sha1sum',' sha256sum', 'sha512sum', _etc_।, हैश लंबाई के आधार पर आप चाहते हैं।) –

+0

यह बेहतर है तो सादा पाठ में सहेजें, और मैं बस दिखाता हूं कि यह कैसे काम करता है .. मैं बस प्रोटोकॉल जोड़ता हूं परिवर्तनीय, तो बस इसे बदलें, और आपको sha256 sha512 .. आदि – Sky

+0

धन्यवाद, यह उपयोगी लग रहा है! – AnC

2

आप बस पासवर्ड छुपाने के लिए तो इसकी SHA1 हैश की दुकान चाहते हैं। अपने संग्रहीत हैश के साथ दर्ज पासवर्ड के हैश की तुलना करें।

+1

और शब्दकोश हमलों के खिलाफ फ़ाइल अनुमतियां 'chmod go-rw myconfig' बदलें। – Eike

+0

'स्वचालित' का अर्थ है कि कोई दर्ज पासवर्ड नहीं है। इसे दर्ज करने के लिए कोई भी नहीं है। –

+0

ग्रेग्स सही है - अगर मैं उपयोगकर्ता को एक और पासवर्ड दर्ज करने के लिए वास्तविक पासवर्ड दर्ज करना स्वचालित करता हूं, तो वास्तविक पासवर्ड को पहले स्थान पर संग्रहीत करने में बहुत कुछ नहीं है। – AnC

3

अपने कार्य को स्वचालित करने के लिए पासवर्ड प्रदान करना; इससे कोई फ़र्क नहीं पड़ता है कि आप पासवर्ड को एन्क्रिप्ट/obfuscate करते हैं, आपको डिक्रिप्टिंग भी प्रदान करने की आवश्यकता होगी।
इस दुविधा के आसपास एकमात्र तरीका एजेंट जैसा प्रोग्राम है, उदाहरण के लिए ssh-agent, जो आपके लिए आपके पासवर्ड संग्रहीत करता है।

(संपादित करें: ठीक किया लिंक)

+0

एसएसएच-एजेंट लगता है कि मैं क्या देख रहा हूं - हालांकि, मैं यह नहीं समझ सकता कि मुझे इसे कैसे नियोजित करना चाहिए। ए) मान लीजिए कि मैं फ़ाइल से एन्क्रिप्टेड पासवर्ड लोड करता हूं, फिर मैं इसे कैसे डिक्रिप्ट करूं? बी) पासवर्ड को पहली जगह एन्क्रिप्ट करने के लिए मैं क्या उपयोग करूं? (मुझे उम्मीद है कि यह एक अलग, मैन्युअल कदम होगा।) – AnC

+0

एसएसएच-एजेंट को उदाहरण के रूप में दिया गया था कि इसे कैसे कार्यान्वित किया जा सकता है। हालांकि, यह एसएसएच से संबंधित कनेक्शन के लिए एक विशिष्ट समाधान है। आपकी विशिष्ट स्थिति के लिए कुछ समान बनाया जा सकता है, लेकिन यह आपके आवेदन पर निर्भर करता है। – pavel

+0

मुझे लगता है कि मैं संबंधित कीपैयर को निर्धारित करने और एक्सेस करने के लिए एक कीरिंग/कीचेन मैनेजर के बारे में सोच रहा था - लेकिन इसके लिए पोर्टेबल समाधान नहीं हो सकता है। (मेरा एप्लिकेशन केवल कुछ आदेशों को प्रेषित करने वाली एक बैश स्क्रिप्ट है - कर्ल के साथ HTTP मूल लेख सोचें।) – AnC

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