दिलचस्प पोस्ट
प्रतीकों को बदलने, अंग्रेजी वर्णमाला को एक्सेंट लेटर्स JSON.Net: सभी निजी क्षेत्रों और उप-कक्षाओं में सभी फ़ील्ड के क्रमिकरण को बल दें अक्षांश / लंबे निर्देशांक को देखते हुए, हम शहर / देश कैसे खोज सकते हैं? "यह" कीवर्ड कैसे काम करता है? स्विफ्ट में NSNotificationCenter addObserver डालें अपडेट ट्रिगर कैसे निर्धारित करें कि क्या डालें या अपडेट करें MySQL में प्रारंभिक मान और ऑटो वेतन वृद्धि कैसे सेट करें? jQuery के addEventListener विधि के बराबर jQuery चेतावनी: push.default अनसेट है; इसका निहित मूल्य गीट 2.0 में बदल रहा है जावा में अवरोधन अपवाद संभालना दिनांक कैसे ओरेकल में संग्रहीत हैं? प्रेस कैसे से बचने के लिए किसी भी getchar () के साथ दर्ज करें क्या यह सी फ़िशर-येट्स फेरबदल सही है? दो मानदंडों द्वारा एक पायथन सूची को छंटनी String.Join बनाम StringBuilder: जो तेजी से है?

जावा में स्ट्रिंग एन्क्रिप्ट करने के लिए कैसे करें

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

अन्य आवश्यकताएं:

  • जटिल नहीं होना चाहिए
  • इसमें आरएसए, पीकेआई इन्फ्रास्ट्रक्चर, कीड़े आदि शामिल नहीं होना चाहिए।

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

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

आपकी क्या सलाह है? क्या कुछ जावा वर्ग एन्क्रिप्ट () डिक्रिप्ट () कर रहा है बिना उच्च सुरक्षा मानकों को प्राप्त करने में ज्यादा जटिलता है?

वेब के समाधान से एकत्रित समाधान "जावा में स्ट्रिंग एन्क्रिप्ट करने के लिए कैसे करें"

मैं कुछ मानक सममित साइफर का उपयोग करने की सलाह देता हूं जो डीईएस , डीडीईएस या एईएस जैसी व्यापक रूप से उपलब्ध है। हालांकि यह सबसे सुरक्षित एल्गोरिथ्म नहीं है, कार्यान्वयन के लोड होते हैं और आपको बारकोड में जानकारी को डिक्रिप्ट करने वाले किसी को भी कुंजी देने की आवश्यकता होती है javax.crypto.Cipher है जो आप यहाँ के साथ काम करना चाहते हैं।

एन्क्रिप्ट करने के लिए बाइट्स को मान लें

byte[] input; 

इसके बाद, आपको कुंजी और प्रारंभिक वेक्टर बाइट्स की आवश्यकता होगी

 byte[] keyBytes; byte[] ivBytes; 

अब आप एल्गोरिथ्म के लिए साइफर आरंभ कर सकते हैं जिसे आपने चुना है:

 // wrap key data in Key/IV specs to pass to cipher SecretKeySpec key = new SecretKeySpec(keyBytes, "DES"); IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); // create the cipher with the algorithm you choose // see javadoc for Cipher class for more info, eg Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); 

एन्क्रिप्शन इस तरह चलेगा:

 cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); byte[] encrypted= new byte[cipher.getOutputSize(input.length)]; int enc_len = cipher.update(input, 0, input.length, encrypted, 0); enc_len += cipher.doFinal(encrypted, enc_len); 

और इस तरह डिक्रिप्शन:

 cipher.init(Cipher.DECRYPT_MODE, key, ivSpec); byte[] decrypted = new byte[cipher.getOutputSize(enc_len)]; int dec_len = cipher.update(encrypted, 0, enc_len, decrypted, 0); dec_len += cipher.doFinal(decrypted, dec_len); 

चेतावनी

इसका उपयोग किसी सुरक्षा माप के रूप में न करें।

इस पोस्ट में एन्क्रिप्शन तंत्र एक एक बार पैड है, जिसका अर्थ है कि 2 एन्क्रिप्टेड संदेशों का उपयोग कर किसी हमलावर द्वारा गुप्त कुंजी को आसानी से पुनर्प्राप्त किया जा सकता है। XOR 2 एन्क्रिप्टेड संदेश और आपको कुंजी मिलती है यह सरल है!

मुसा द्वारा नियुक्त किया गया


मैं सूर्य के बेस 64 एन्कोडर / डिकोडर का उपयोग कर रहा हूं जो कि सूर्य के जेआरई में पाया जाता है, फिर भी एक अन्य जार से बचने के लिए यह OpenJDK या किसी अन्य के JRE का उपयोग करने के बिंदु से खतरनाक है इसके अलावा, वहाँ एक और कारण है कि मैं एपका कॉमन्स बीब एनकोडर / डिकोडर के साथ प्रयोग करना चाहिए?

 public class EncryptUtils { public static final String DEFAULT_ENCODING = "UTF-8"; static BASE64Encoder enc = new BASE64Encoder(); static BASE64Decoder dec = new BASE64Decoder(); public static String base64encode(String text) { try { return enc.encode(text.getBytes(DEFAULT_ENCODING)); } catch (UnsupportedEncodingException e) { return null; } }//base64encode public static String base64decode(String text) { try { return new String(dec.decodeBuffer(text), DEFAULT_ENCODING); } catch (IOException e) { return null; } }//base64decode public static void main(String[] args) { String txt = "some text to be encrypted"; String key = "key phrase used for XOR-ing"; System.out.println(txt + " XOR-ed to: " + (txt = xorMessage(txt, key))); String encoded = base64encode(txt); System.out.println(" is encoded to: " + encoded + " and that is decoding to: " + (txt = base64decode(encoded))); System.out.print("XOR-ing back to original: " + xorMessage(txt, key)); } public static String xorMessage(String message, String key) { try { if (message == null || key == null) return null; char[] keys = key.toCharArray(); char[] mesg = message.toCharArray(); int ml = mesg.length; int kl = keys.length; char[] newmsg = new char[ml]; for (int i = 0; i < ml; i++) { newmsg[i] = (char)(mesg[i] ^ keys[i % kl]); }//for i return new String(newmsg); } catch (Exception e) { return null; } }//xorMessage }//class 

यह पहला पृष्ठ है जो Google के माध्यम से दिखाया गया है, और सभी कार्यान्वयनों में सुरक्षा कमजोरियों ने मुझे कष्ट देना कहा है इसलिए मैं दूसरों के लिए एन्क्रिप्शन के बारे में जानकारी जोड़ने के लिए पोस्टिंग कर रहा हूं क्योंकि यह मूल पाठ के 7 वर्षों का है। मैं कम्प्यूटर इंजीनियरिंग में परास्नातक डिग्री रखता हूं और क्रिप्टोग्राफी सीखने और सीखने में काफी समय बिताता हूं इसलिए मैं इंटरनेट को एक सुरक्षित स्थान बनाने के लिए अपने 2 सेंट फेंक रहा हूं।

इसके अलावा, ध्यान रखें कि किसी भी परिस्थिति के लिए कई कार्यान्वयन सुरक्षित हो सकते हैं, लेकिन उन का उपयोग क्यों करना और संभावित रूप से गलती से गलती हो सकती है? आपके पास उपलब्ध सबसे मजबूत उपकरण का उपयोग करें जब तक आपके पास विशिष्ट कारण नहीं है। कुल मिलाकर मैं अत्यधिक पुस्तकालय का उपयोग करने की सलाह देता हूं और अगर आप कर सकते हैं, मैं सुझाता हूँ Jasypt

मैं नीचे सुरक्षित सममित क्रिप्टोग्राफ़ी की मूल बातें रेखांकित करता हूं और सामान्य गलतियां बताता हूं जो मुझे ऑनलाइन दिखाई देती हैं I

सबसे पहले आपको सबसे पहले एक सिमुलेटर कुंजी ब्लॉक सिफर लेने की जरूरत है एक अवरोध सिफर एक उपकरण है जिसे छद्म-यादृच्छिकता बनाने के लिए उपयोग किया जाता है सुनिश्चित करें कि कभी भी, मैं दोहराना कभी भी डीईएस का उपयोग नहीं करता, मैं कहूंगा कि कभी भी 3DES का उपयोग न करें एकमात्र ब्लॉक सिफर जो स्नोडेन की एनएसए रिलीज भी सचमुच स्यूडो-रैंडम के करीब होने की पुष्टि कर रहा है, संभवतः एईएस 256 है ।

अब एन्क्रिप्शन मोड के बारे में बात करते हैं। कभी भी ईसीबी का प्रयोग न करें, मसलन, लिनक्स पेंगुइन द्वारा दिखाए गए आंकड़ों को दोहराने में यह बुरा है।

जावा में कार्यान्वित करते हुए नोट करें कि यदि आप निम्न कोड का उपयोग करते हैं, तो ईसीबी मोड डिफ़ॉल्ट रूप से सेट होता है:

 Cipher cipher = Cipher.getInstance("AES"); 

… इस से बचें! जो बहुत सारे ऑनलाइन उदाहरणों में देखा जाता है

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

इसलिए ठेठ जावा कार्यान्वयन में यह आप चाहते हैं:

 Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); 

जीसीएम सीटीआर मोड पर बनाया गया है और पैडिंग की आवश्यकता नहीं है। लेकिन अगर किसी भी कारण से आप उदाहरण के लिए उपयोग करने के लिए चुनते हैं तो सीकेसी मोड PKCS7 पेडिंग के साथ ऐसा करते हैं:

  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); 

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

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

अब तक मुझे आशा है कि सभी अन्य पदों के माध्यम से चले गए और उन्हें भेद्यता को निकालने के लिए संपादित किया गया। लेकिन यहां Jasypt के साथ अपने जीवन को आसान बनाने के लिए आप इसे कैसे उपयोग करते हैं!

Gradle

  compile group: 'org.jasypt', name: 'jasypt', version: '1.9.2' 

सेट अप

 myPassword = "A Strong Password" BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); textEncryptor.setPassword(myPassword); 

एन्क्रिप्शन

 String myEncryptedText = textEncryptor.encrypt(myText); 

डिक्रिप्शन

 String plainText = textEncryptor.decrypt(myEncryptedText); 

अधिक सुरक्षा के लिए नीचे दिए गए StrongTextEncryptor util वर्ग का उपयोग करें, लेकिन यह धीमा है। (आपको जावा क्रिप्टोग्राफी एक्सटेंशन (जेसीई) डाउनलोड करने और असीमित ताकत अधिकार क्षेत्र नीति फ़ाइलों को उपयोग करने की आवश्यकता हो सकती है):

सेट अप

 myPassword = "A Strong Password" StrongTextEncryptor textEncryptor = new StrongTextEncryptor(); textEncryptor.setPassword(myPassword); 

एन्क्रिप्शन

 String myEncryptedText = textEncryptor.encrypt(myText); 

डिक्रिप्शन

 String plainText = textEncryptor.decrypt(myEncryptedText); 

यह सिर्फ इतना साफ नहीं है? 🙂

ध्यान दें कि जब Jasypt का उपयोग करते समय आपको सच्चाई के बारे में चिंता करने की जरूरत नहीं है, जैसा कि ऊपर चर्चा की गई है, सिर्फ एक मजबूत पासवर्ड का उपयोग करें, उनकी लाइब्रेरी आपके मजबूत पासवर्ड को एक उचित क्रिप्टो कुंजी में बदल देती है। लेकिन एक कमजोर पासवर्ड याद रखना अभी भी कमज़ोर पासवर्ड है I

एंड्रॉइड डेवलपर्स

एक महत्वपूर्ण मुद्दा यह बताता है कि आपका एंड्रॉइड कोड रिवर्स इंजीनियर सक्षम है। इसका मतलब है कि यदि आप अपने कोड में सादा पाठ में पासवर्ड संग्रहीत करते हैं एक हैकर आसानी से इसे पुनः प्राप्त कर सकता है। आम तौर पर इन प्रकार के एन्क्रिप्शन के लिए आप असममित क्रिप्टोग्राफी का उपयोग करना चाहते हैं। यह इस पद के दायरे के बाहर है, इसलिए मैं इसमें डाइविंग से बचना चाहूंगा

2013 से एक दिलचस्प पढ़ने : इंगित करता है कि एंड्रॉइड में 88% क्रिप्टो कार्यान्वयन अनुचित तरीके से किया गया था और यह वास्तव में मेरे यहां आने का आधार है और इतना रेंटा है

धन्यवाद ive ने आपके कोड का उपयोग करके इस वर्ग को बनाया है, शायद किसी व्यक्ति को यह यूजरफुल मिले

वस्तु क्रिप्टर

 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.ShortBufferException; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class ObjectCrypter { private Cipher deCipher; private Cipher enCipher; private SecretKeySpec key; private IvParameterSpec ivSpec; public ObjectCrypter(byte[] keyBytes, byte[] ivBytes) { // wrap key data in Key/IV specs to pass to cipher ivSpec = new IvParameterSpec(ivBytes); // create the cipher with the algorithm you choose // see javadoc for Cipher class for more info, eg try { DESKeySpec dkey = new DESKeySpec(keyBytes); key = new SecretKeySpec(dkey.getKey(), "DES"); deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public byte[] encrypt(Object obj) throws InvalidKeyException, InvalidAlgorithmParameterException, IOException, IllegalBlockSizeException, ShortBufferException, BadPaddingException { byte[] input = convertToByteArray(obj); enCipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); return enCipher.doFinal(input); // cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec); // byte[] encypted = new byte[cipher.getOutputSize(input.length)]; // int enc_len = cipher.update(input, 0, input.length, encypted, 0); // enc_len += cipher.doFinal(encypted, enc_len); // return encypted; } public Object decrypt( byte[] encrypted) throws InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException, IOException, ClassNotFoundException { deCipher.init(Cipher.DECRYPT_MODE, key, ivSpec); return convertFromByteArray(deCipher.doFinal(encrypted)); } private Object convertFromByteArray(byte[] byteObject) throws IOException, ClassNotFoundException { ByteArrayInputStream bais; ObjectInputStream in; bais = new ByteArrayInputStream(byteObject); in = new ObjectInputStream(bais); Object o = in.readObject(); in.close(); return o; } private byte[] convertToByteArray(Object complexObject) throws IOException { ByteArrayOutputStream baos; ObjectOutputStream out; baos = new ByteArrayOutputStream(); out = new ObjectOutputStream(baos); out.writeObject(complexObject); out.close(); return baos.toByteArray(); } } 

इस बारे में कैसा है:

 private static byte[] xor(final byte[] input, final byte[] secret) { final byte[] output = new byte[input.length]; if (secret.length == 0) { throw new IllegalArgumentException("empty security key"); } int spos = 0; for (int pos = 0; pos < input.length; ++pos) { output[pos] = (byte) (input[pos] ^ secret[spos]); ++spos; if (spos >= secret.length) { spos = 0; } } return output; } 

मेरे लिए ठीक काम करता है और इसके बजाय कॉम्पैक्ट है

मैं https://www.bouncycastle.org/ की तरह कुछ का उपयोग करने पर विचार करूँगा यह एक प्रीबिल्ल्ट लाइब्रेरी है जो आपको कई सिफरों के साथ जो भी चाहें एन्क्रिप्ट करने की अनुमति देता है, मैं समझता हूं कि आप केवल स्नूपिंग से रक्षा करना चाहते हैं, लेकिन यदि आप वास्तव में Base64 का उपयोग कर जानकारी को संरक्षित करना चाहते हैं, वास्तव में आपकी रक्षा नहीं करेंगे

यहां एक स्प्रिंग सिंगलटन के रूप में मेटा 64.com से मेरा कार्यान्वयन है I यदि आप प्रत्येक कॉल के लिए एक कॉपर इंस्टेंस बनाना चाहते हैं जो भी काम करेगा, और फिर आप 'सिंक्रनाइज़' कॉल को निकाल सकते हैं, लेकिन सावधान रहें 'सिफर' धागा-सुरक्षित नहीं है

 import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.xml.bind.DatatypeConverter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @Component @Scope("singleton") public class Encryptor { @Value("${aeskey}") private String keyStr; private Key aesKey = null; private Cipher cipher = null; synchronized private void init() throws Exception { if (keyStr == null || keyStr.length() != 16) { throw new Exception("bad aes key configured"); } if (aesKey == null) { aesKey = new SecretKeySpec(keyStr.getBytes(), "AES"); cipher = Cipher.getInstance("AES"); } } synchronized public String encrypt(String text) throws Exception { init(); cipher.init(Cipher.ENCRYPT_MODE, aesKey); return toHexString(cipher.doFinal(text.getBytes())); } synchronized public String decrypt(String text) throws Exception { init(); cipher.init(Cipher.DECRYPT_MODE, aesKey); return new String(cipher.doFinal(toByteArray(text))); } public static String toHexString(byte[] array) { return DatatypeConverter.printHexBinary(array); } public static byte[] toByteArray(String s) { return DatatypeConverter.parseHexBinary(s); } /* * DO NOT DELETE * * Use this commented code if you don't like using DatatypeConverter dependency */ // public static String toHexStringOld(byte[] bytes) { // StringBuilder sb = new StringBuilder(); // for (byte b : bytes) { // sb.append(String.format("%02X", b)); // } // return sb.toString(); // } // // public static byte[] toByteArrayOld(String s) { // int len = s.length(); // byte[] data = new byte[len / 2]; // for (int i = 0; i < len; i += 2) { // data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + // 1), 16)); // } // return data; // } } 

यहां कुछ लिंक हैं जो आप जावा का समर्थन कर सकते हैं

एक डेटा स्ट्रीम एन्क्रिप्ट / डिक्रिप्ट करना।

यह उदाहरण दर्शाता है कि एन्क्रिप्ट कैसे करना है (एईएस, ब्लॉफिश, आरसी 2, डीडीईएस आदि जैसे सममित एन्क्रिप्शन एल्गोरिथ्म का उपयोग करना) बड़ी मात्रा में डेटा डेटा को एन्क्रिप्ट करने वाले तरीकों में से एक में विखंडू में दिया गया है: एन्क्रिप्टबेट्स, एन्क्रिप्टेड स्ट्रिंग, एन्क्रिप्टबैटेनएएनसी, या एन्क्रिप्टेड स्ट्रिंगजेन्सी। (विधि का नाम इनपुट (स्ट्रिंग या बाइट सरणी) और वापसी प्रकार (एन्कोडेड स्ट्रिंग या बाइट सरणी) के प्रकार को इंगित करता है। फर्स्टचंड और लास्ट चाड प्रॉपर्टी्स का उपयोग यह संकेत करने के लिए किया जाता है कि क्या एक हिस्सा पहली, मध्यम या स्ट्रीम में अंतिम है या नहीं एन्क्रिप्टेड होने के लिए। डिफ़ॉल्ट रूप से, फर्स्टचंड और लास्टचैड दोनों समान समान हैं – जिसका अर्थ है कि डेटा पारित पूरी राशि है।

JCERefGuide

जावा एन्क्रिप्शन उदाहरण

आप Jasypt का उपयोग कर सकते हैं

Jasypt के साथ, एन्क्रिप्ट करना और एक पासवर्ड की जाँच करना उतना आसान हो सकता है जितना …

 StrongTextEncryptor textEncryptor = new StrongTextEncryptor(); textEncryptor.setPassword(myEncryptionPassword); 

एन्क्रिप्शन:

 String myEncryptedText = textEncryptor.encrypt(myText); 

डिक्रिप्शन:

 String plainText = textEncryptor.decrypt(myEncryptedText); 

Gradle:

समूह संकलित करें: 'org.jasypt', नाम: 'jasypt', संस्करण: '1.9.2'

विशेषताएं

 Jasypt provides you with easy unidirectional (digest) and bidirectional encryption techniques. Open API for use with any JCE provider, and not only the default Java VM one. Jasypt can be easily used with well-known providers like Bouncy Castle. Learn more. Higher security for your users' passwords. Learn more. Binary encryption support. Jasypt allows the digest and encryption of binaries (byte arrays). Encrypt your objects or files when needed (for being sent over the net, for example). Number encryption support. Besides texts and binaries, it allows the digest and encryption of numeric values (BigInteger and BigDecimal, other numeric types are supported when encrypting for Hibernate persistence). Learn more. Completely thread-safe. Support for encryptor/digester pooling, in order to achieve high performance in multi-processor/multi-core systems. Includes a lightweight ("lite") version of the library for better manageability in size-restrictive environments like mobile platforms. Provides both easy, no-configuration encryption tools for users new to encryption, and also highly configurable standard encryption tools, for power-users. Hibernate 3 and 4 optional integration for persisting fields of your mapped entities in an encrypted manner. Encryption of fields is defined in the Hibernate mapping files, and it remains transparent for the rest of the application (useful for sensitive personal data, databases with many read-enabled users...). Encrypt texts, binaries, numbers, booleans, dates... Learn more. Seamlessly integrable into a Spring application, with specific integration features for Spring 2, Spring 3.0 and Spring 3.1. All the digesters and encryptors in jasypt are designed to be easily used (instantiated, dependency-injected...) from Spring. And, because of their being thread-safe, they can be used without synchronization worries in a singleton-oriented environment like Spring. Learn more: Spring 2, Spring 3.0, Spring 3.1. Spring Security (formerly Acegi Security) optional integration for performing password encryption and matching tasks for the security framework, improving the security of your users' passwords by using safer password encryption mechanisms and providing you with a higher degree of configuration and control. Learn more. Provides advanced functionality for encrypting all or part of an application's configuration files, including sensitive information like database passwords. Seamlessly integrate encrypted configuration into plain, Spring-based and/or Hibernate-enabled applications. Learn more. Provides easy to use CLI (Command Line Interface) tools to allow developers initialise their encrypted data and include encryption/decryption/digest operations in maintenance tasks or scripts. Learn more. Integrates into Apache Wicket, for more robust encryption of URLs in your secure applications. Comprehensive guides and javadoc documentation, to allow developers to better understand what they are really doing to their data. Robust charset support, designed to adequately encrypt and digest texts whichever the original charset is. Complete support for languages like Japanese, Korean, Arabic... with no encoding or platform issues. Very high level of configuration capabilities: The developer can implement tricks like instructing an "encryptor" to ask a, for example, remote HTTPS server for the password to be used for encryption. It lets you meet your security needs. 
 String s1="arshad"; char[] s2=s1.toCharArray(); int s3= s2.length; System.out.println(s3); int i=0; // for(int j=0;j<s3;j++) // System.out.println(s2[j]); for(i=0;i<((s3)/2);i++) { char z,f=10; z=(char) (s2[i] * f); s2[i]=s2[(s3-1)-i]; s2[(s3-1)-i]=z; String b=new String(s2); print(b); } 

आप एन्क्रिप्शन / डिक्रिप्शन कोड पीढ़ी जैसे कुछ स्वचालित उपकरण पर विचार कर सकते हैं। https://www.stringencrypt.com/java-encryption/

यह स्ट्रिंग या फ़ाइल एन्क्रिप्शन के लिए हर बार विभिन्न एन्क्रिप्शन और डिक्रिप्शन कोड उत्पन्न कर सकता है।

आरएसए, एईएस आदि का उपयोग किए बिना फास्ट स्ट्रिंग एन्क्रिप्शन की बात आती है तो यह बहुत आसान है।

नमूना परिणाम:

 // encrypted with https://www.stringencrypt.com (v1.1.0) [Java] // szTest = "Encryption in Java!" String szTest = "\u9E3F\uA60F\uAE07\uB61B\uBE1F\uC62B\uCE2D\uD611" + "\uDE03\uE5FF\uEEED\uF699\uFE3D\u071C\u0ED2\u1692" + "\u1E06\u26AE\u2EDC"; for (int iatwS = 0, qUJQG = 0; iatwS < 19; iatwS++) { qUJQG = szTest.charAt(iatwS); qUJQG ++; qUJQG = ((qUJQG << 5) | ( (qUJQG & 0xFFFF) >> 11)) & 0xFFFF; qUJQG -= iatwS; qUJQG = (((qUJQG & 0xFFFF) >> 6) | (qUJQG << 10)) & 0xFFFF; qUJQG ^= iatwS; qUJQG -= iatwS; qUJQG = (((qUJQG & 0xFFFF) >> 3) | (qUJQG << 13)) & 0xFFFF; qUJQG ^= 0xFFFF; qUJQG ^= 0xB6EC; qUJQG = ((qUJQG << 8) | ( (qUJQG & 0xFFFF) >> 8)) & 0xFFFF; qUJQG --; qUJQG = (((qUJQG & 0xFFFF) >> 5) | (qUJQG << 11)) & 0xFFFF; qUJQG ++; qUJQG ^= 0xFFFF; qUJQG += iatwS; szTest = szTest.substring(0, iatwS) + (char)(qUJQG & 0xFFFF) + szTest.substring(iatwS + 1); } System.out.println(szTest); 

हम इसे हमारी कंपनी में हर समय उपयोग करते हैं

 public static String encryptParams(String myTextInput) { String myKey = "40674244454045cb9a70040a30e1c007"; String myVector = "@1B2c3D4e5F6g7H8"; String encData = ""; try{ JavaEncryprtionUtil encUtil = new JavaEncryprtionUtil(); encData = Base64.encodeToString(encUtil.encrypt(myTextInput.getBytes("UTF-8"), myKey.getBytes("UTF-8"), myVector.getBytes("UTF-8")),Base64.DEFAULT); System.out.println(encData); }catch(NoSuchAlgorithmException ex){ ex.printStackTrace(); }catch(NoSuchPaddingException ex){ ex.printStackTrace(); }catch(InvalidKeyException ex){ ex.printStackTrace(); }catch(InvalidAlgorithmParameterException ex){ ex.printStackTrace(); }catch(IllegalBlockSizeException ex){ ex.printStackTrace(); }catch(BadPaddingException ex){ ex.printStackTrace(); }catch(UnsupportedEncodingException ex){ ex.printStackTrace(); } return encData; }