>  기사  >  Java  >  Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능

Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능

王林
王林원래의
2023-08-08 09:37:451545검색

Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능

Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능

오늘날의 인터넷 시대에는 데이터 전송의 대중화와 민감한 정보의 유출 위험이 증가함에 따라 데이터 보안이 더욱 중요해졌습니다. 마이크로서비스 아키텍처의 등장은 데이터 암호화 및 암호 해독을 위한 보다 유연하고 확장 가능한 솔루션을 제공합니다. 이 기사에서는 Java를 사용하여 간단하지만 강력한 마이크로서비스 데이터 암호화 및 복호화 기능을 작성하는 방법을 소개하고 해당 코드 예제를 제공합니다.

먼저 안정적인 암호화 알고리즘을 선택해야 합니다. 여기서는 매우 인기 있고 안전하며 신뢰할 수 있는 대칭 암호화 알고리즘인 AES(Advanced Encryption Standard) 알고리즘을 사용하기로 선택했습니다. AES 알고리즘은 128비트, 192비트 및 256비트 키 길이를 지원하며 실제 필요에 따라 다양한 키 길이를 선택할 수 있습니다. 또한 적절한 패딩 모드와 암호화 모드도 선택해야 합니다. 여기서는 PKCS5Padding 패딩 모드와 CBC 암호화 모드를 사용하도록 선택합니다.

다음으로 Java의 암호화 라이브러리를 사용하여 암호화 및 암호 해독 작업을 수행합니다. 먼저 키를 생성하여 안전한 장소에 보관해야 합니다. 여기서는 Java에서 제공하는 KeyGenerator 클래스를 사용하여 키를 생성합니다.

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

public class EncryptionUtils {
    public static SecretKey generateKey() throws NoSuchAlgorithmException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128);
        return keyGenerator.generateKey();
    }
}

키를 생성한 후 키를 사용하여 암호화 및 암호 해독 작업을 수행할 수 있습니다. 다음은 키를 사용하여 데이터를 암호화하는 샘플 코드입니다.

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Base64;

public class EncryptionUtils {
    public static String encryptData(String data, SecretKey secretKey, String initVector) throws GeneralSecurityException {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8)));
        byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedData);
    }
}

위 코드에서는 Base64 인코딩을 사용하여 암호화된 데이터를 변환하여 네트워크에서의 전송 및 저장을 용이하게 합니다. 다음으로 키를 사용하여 데이터를 해독하는 예제 코드를 제공합니다.

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Base64;

public class EncryptionUtils {
    public static String decryptData(String encryptedData, SecretKey secretKey, String initVector) throws GeneralSecurityException {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8)));
        byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
        return new String(decryptedData, StandardCharsets.UTF_8);
    }
}

위 코드에서는 Base64 디코딩을 사용하여 암호화된 데이터를 복원합니다.

마지막으로 위의 암호화 및 복호화 기능을 마이크로서비스 API로 캡슐화하여 다른 시스템 호출을 용이하게 할 수 있습니다. 다음은 간단한 마이크로서비스 예제 코드입니다.

import org.springframework.web.bind.annotation.*;

import javax.crypto.SecretKey;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/encryption")
public class EncryptionController {
    private SecretKey secretKey;

    public EncryptionController() throws NoSuchAlgorithmException {
        this.secretKey = EncryptionUtils.generateKey();
    }

    @PostMapping("/encrypt")
    public Map<String, String> encryptData(@RequestBody Map<String, String> data) throws GeneralSecurityException {
        String encryptedData = EncryptionUtils.encryptData(data.get("data"), secretKey, data.get("initVector"));
        Map<String, String> result = new HashMap<>();
        result.put("encryptedData", encryptedData);
        return result;
    }

    @PostMapping("/decrypt")
    public Map<String, String> decryptData(@RequestBody Map<String, String> data) throws GeneralSecurityException {
        String decryptedData = EncryptionUtils.decryptData(data.get("encryptedData"), secretKey, data.get("initVector"));
        Map<String, String> result = new HashMap<>();
        result.put("decryptedData", decryptedData);
        return result;
    }
}

위 코드에서는 Spring 프레임워크를 사용하여 /encryption/encrypt接口用于加密数据,/encryption/decrypt인터페이스를 사용하여 데이터를 해독하는 간단한 HTTP 인터페이스를 구현합니다. 요청 매개변수는 JSON 형식을 사용하며 암호화되거나 복호화된 결과가 반환됩니다.

결론적으로 우리는 Java를 사용하여 간단하지만 강력한 마이크로서비스 데이터 암호화 및 복호화 기능을 작성했습니다. AES 알고리즘을 사용하여 데이터를 암호화 및 해독하고 이를 다른 시스템에서 호출할 수 있는 마이크로서비스 API로 캡슐화합니다. 이를 통해 전송 및 저장 중 데이터 보안을 보장하고 시스템의 전반적인 보안을 향상시킬 수 있습니다.

위 내용은 Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.