"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गोलांग एन्क्रिप्शन को देखते हुए जावा और स्काला में एईएस-एन्क्रिप्टेड टेक्स्ट को कैसे डिक्रिप्ट करें?

गोलांग एन्क्रिप्शन को देखते हुए जावा और स्काला में एईएस-एन्क्रिप्टेड टेक्स्ट को कैसे डिक्रिप्ट करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:143

How to Decrypt AES-Encrypted Text in Java and Scala, Given Golang Encryption?

गोलंग में एईएस एन्क्रिप्शन और जावा में इसका डिक्रिप्शन

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

Java डिक्रिप्शन फ़ंक्शन

import java.util.Base64;
import javax.crypto.*;
import javax.crypto.spec.*;

public class AESDecryption {

    public static String decode(String base64Text, byte[] key)
            throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
        byte[] inputArr = Base64.getUrlDecoder().decode(base64Text);
        SecretKeySpec skSpec = new SecretKeySpec(key, "AES");
        Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
        int blockSize = cipher.getBlockSize();
        IvParameterSpec iv = new IvParameterSpec(Arrays.copyOf(inputArr, blockSize));
        byte[] dataToDecrypt = Arrays.copyOfRange(inputArr, blockSize, inputArr.length);
        cipher.init(Cipher.DECRYPT_MODE, skSpec, iv);
        byte[] result = cipher.doFinal(dataToDecrypt);
        return new String(result, StandardCharsets.UTF_8);
    }

    public static void main(String[] args) {
        // Encryption result from the Go function.
        String base64Text = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0=";
        // The encryption key (same as in Go).
        byte[] key = "0123456789abcdef".getBytes();

        try {
            // Decrypt the ciphertext.
            String decrypted = decode(base64Text, key);
            // Print the decrypted text.
            System.out.println(decrypted);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

स्कैला डिक्रिप्शन फ़ंक्शन

import java.nio.charset.StandardCharsets
import javax.crypto._
import javax.crypto.spec.{IvParameterSpec, SecretKeySpec}
import java.util.Base64

object AESDecryption {

  def decode(input: String, key: String): String = {
    val cipher = Cipher.getInstance("AES/CFB/NoPadding")
    val blockSize = cipher.getBlockSize
    val keyBytes = key.getBytes
    val inputArr = Base64.getUrlDecoder.decode(input)
    val skSpec = new SecretKeySpec(keyBytes, "AES")
    val iv = new IvParameterSpec(inputArr.slice(0, blockSize).toArray)
    val dataToDecrypt = inputArr.slice(blockSize, inputArr.size)
    cipher.init(Cipher.DECRYPT_MODE, skSpec, iv)
    new String(cipher.doFinal(dataToDecrypt.toArray), StandardCharsets.UTF_8)
  }

  def main(args: Array[String]): Unit = {
    // Encryption result from the Go function.
    val base64Text = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0="
    // The encryption key (same as in Go).
    val key = "0123456789abcdef"

    // Decrypt the ciphertext.
    val decrypted = decode(base64Text, key)
    // Print the decrypted text.
    println(decrypted)
  }
}

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

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3