2012-04-13 11 views
6

साथ खेलने के फ्रेमवर्क 2.0 lib क्रिप्टो प्रदान करता है, कोड को देखने केडिक्रिप्ट स्ट्रिंग क्रिप्टो

Crypto.sign(username); 

लेकिन उपयोगकर्ता नाम डिक्रिप्ट करने के लिए कैसे फिर? विधि या अस्वीकार नहीं है? या मुझसे यहां कुछ छूट रहा है?

उत्तर

6

एपीआई हस्ताक्षर बनाने के लिए है, एक SHA1 हैश (जैसा कि आप लिंक से जुड़े कोड में देख सकते हैं)। इसका उद्देश्य उलटा नहीं है (हस्ताक्षरित) लेकिन प्रामाणिकता के सत्यापन के रूप में उपयोग किया जाना है।

उदाहरण के लिए, यदि आपने प्रमाणीकरण टोकन पर हस्ताक्षर किए हैं, तो आप यह सुनिश्चित कर सकते हैं कि Crypto.sign(token) == tokenSignature की जांच करके इसे छेड़छाड़ नहीं किया गया था।

यदि आप एन्क्रिप्शन और डिक्रिप्शन चाहते हैं, तो Crypto.encryptAES/Crypto.decryptAES (Play 2.1 में जोड़ा गया) देखें।

+1

इसका क्या लाभ है, हम भी'myString = password' –

+0

अच्छी स्थिति से जांच सकते हैं। मैंने एक बेहतर उदाहरण दिखाने के लिए जवाब संपादित किया है। –

+1

कृपया ध्यान दें कि Crypto.encryptAES दुर्बलता के हमलों के लिए कमजोर है जब तक कि यह प्रमाणीकरण के लिए मैक के साथ संयुक्त नहीं होता है, क्योंकि यह एईएस-सीटीआर का उपयोग करता है। आप शायद जो चाहते हैं वह एईएस-जीसीएम है। 'क्रिप्टो 'को 2.5.x में बहिष्कृत किया जाएगा और इसे स्थानांतरित करने के लिए माइग्रेशन मार्गदर्शिका है: https://www.playframework.com/documentation/2.5.x/CryptoMigration25 –

1

आप वास्तव में क्या करने की कोशिश कर रहे हैं? आप यह सुनिश्चित करने के लिए केवल एक मान पर हस्ताक्षर करते हैं कि इसे बदला नहीं गया था। मुद्दा यह है कि आप इसे आसानी से "हस्ताक्षर" नहीं कर सकते हैं।

यदि आप अपने ऐप के भीतर एक मान एन्क्रिप्ट और डिक्रिप्ट करना चाहते हैं, तो आपको javax.crypto से एन्क्रिप्शन एल्गोरिदम का उपयोग करना होगा।

+0

अपने समय के लिए धन्यवाद, मैं एक उपयोगकर्ता नाम और पासवर्ड, और प्ले में डिक्रिप्ट करने के लिए चाहते हैं! 1.2.4 मैंने इसके लिए क्रिप्टो क्लास का उपयोग किया है .. और फिर अनुरोध समय पर मैं उपयोगकर्ता नाम और पासवर्ड दिखाना चाहता हूं, इसलिए मुझे इसे फिर से डिक्रिप्ट करना होगा। लेकिन मैं समझता हूं कि मुझे इस उद्देश्य के लिए अतिरिक्त कक्षाओं का उपयोग करने की आवश्यकता है ... – adis

1

यदि आपको एन्क्रिप्ट/डिक्रिप्ट कार्यक्षमता की आवश्यकता है तो आप http://www.jasypt.org/ जोड़ने का प्रयास कर सकते हैं।

org.jasypt.util.text.BasicTextEncryptor उपयोगकर्ता को सामान्य-शक्ति एल्गोरिदम का उपयोग करके टेक्स्ट डेटा को एन्क्रिप्ट और डिक्रिप्ट करने की अनुमति देता है। एन्क्रिप्ट करने और डिक्रिप्ट करने में सक्षम होने के लिए।

से आप कुछ इस तरह कर सकते हैं:

... 
BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); 
textEncryptor.setPassword(myEncryptionPassword); 
... 
String myEncryptedText = textEncryptor.encrypt(myText); 
String plainText = textEncryptor.decrypt(myEncryptedText); 
... 
+0

हां, वास्तव में मैं इस पर आया :-)। और मैं इसे अपने प्रोजेक्ट में इस्तेमाल करने की कोशिश करूंगा, धन्यवाद साझा करने के लिए। – adis

+0

मैं jasypt का उपयोग नहीं करता, क्योंकि यह अपने स्वयं के क्रिप्टो का आविष्कार करता है: http://security.stackexchange.com/a/65240 –

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