>Java >java지도 시간 >SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

PHPz
PHPz앞으로
2023-05-22 20:50:051307검색

1. Maven 프로젝트에 종속성을 도입하세요

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

2. 동시에 application.yml 구성 파일에서 비밀번호를 구성해야 합니다

도구는 이 비밀번호를 사용하여 암호화하거나 해독하므로 구성의 암호화된 문자열은 동일한 비밀번호를 사용하여 암호화합니다. 그렇지 않으면 프로젝트가 시작될 때 암호가 해독되지 않습니다.

jasypt:
    encryptor:
        password: 123456

3. 테스트 케이스의 원본 정보를

암호화할 수 있습니다. 사용 방법은 매우 간단합니다. 간단한 데모는 다음과 같습니다:

@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class Test {
    @Autowired
    StringEncryptor encryptor;
 
    @Test
    public void getPass() {
        #直接调用加密的方法
        String mysql = encryptor.encrypt("mysql-username|mysql-password");
    }
}

4. 마지막으로 암호화된 문자열을 구성 파일에 넣으세요

예: 위의 "mysql" 문자열

url: ENC(mysql==)
username: ENC(mysql==)
password: ENC(mysql=)

ENC()는 고정된 쓰기 방식입니다. mysql= =는 암호화된 문자열입니다.

이렇게 하면 중요한 정보를 암호화하는 척할 수 있습니다. 하하하 제가 척이라고 말하는 이유는 다음과 같습니다. 암호화된 비밀번호는 구성 파일에 일반 텍스트로 저장되어 누구나 쉽게 해독할 수 있기 때문에 많은 사람들이 이 문제로 인해 혼란을 겪을 수 있습니다.

네, 정말 그렇습니다. 이런 종류의 암호화 방법은 사람들이 계정 비밀번호를 한 번에 볼 수 없게 한다고 할 수 있습니다.

데이터가 암호화되더라도 해커가 프로젝트에 접근한 후에는 의미가 없습니다. 암호화는 허위 보안 수단일 뿐이기 때문입니다. 그러므로 프로젝트와 서버의 보안을 확보하는 것은 가장 기본적이고 중요합니다.

OK!OK!OK!

구성 파일 암호화

개발 과정에 있는 학생들은 모두 알고 있습니다. 예를 들어 프로젝트 관련 정보와 데이터베이스 정보는 일반적으로 구성 파일에 저장되며 모두 일반 텍스트로 되어 있습니다. , 오늘은 springboot 암호화와 통합된 jasypt 구성을 소개하겠습니다.

우선, 이것들은 모두 springboot 프로젝트가 정상적으로 실행될 수 있다는 전제를 기반으로 합니다.

1단계: 그림과 같이 pom 파일에 종속성을 추가합니다

A 버전은 여기에서 제공됩니다

<dependency>
   <groupId>com.github.ulisesbocchio</groupId>
   <artifactId>jasypt-spring-boot-starter</artifactId>
   <version>2.1.0</version>
</dependency>

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

2단계: 키 생성

로컬 Maven 저장소에서 jasypt jar 패키지를 찾아 엽니다. 그림과 같이 해당 디렉터리 cmd 명령 창에 있습니다.

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

Execute

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBESTringEncryptionCLI input="test" 비밀번호= test algorithm=PBEWithMD5AndDES

입력은 일반 텍스트 비밀번호입니다. 여기서는 테스트를 시연하고 있습니다. 비밀번호는 개인 키입니다. 이 알고리즘은 규칙이므로 변경하지 마세요! ! ! . 실행 후 모습은 다음과 같습니다.

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

간단한 설명으로, 여기서 출력되는 것은 암호화된 암호문(비밀번호)입니다. cmd를 사용하여 텍스트를 복사하는 방법은 다음과 같습니다. (처음에는 cmd를 사용하여 복사하는 방법을 몰랐기 때문에) 복사하려는 내용을 마우스 오른쪽 버튼으로 클릭하고 선택하면 복사할 수 있습니다.

3단계: 그림과 같이 springboot 구성 파일에 구성을 추가합니다.

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

여기에서는 application.yml 파일을 사용하고 application.properties 파일은 다음과 같이 작성됩니다. jasypt.encryptor.password=test .

그러나 실제로 사용되는 것은 시작 클래스에서 이 노드 사이의 값을 재할당하는 System.setProperty("jasypt.encryptor.password", "demo")입니다. 이는 개인 키를 다시 보호하는 데 도움이 됩니다. 참고) 좋은 ​​해결책이 있으면 시간 내서 메시지를 남겨주시고 함께 논의해 보세요.)

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

설명: 위 사진의 첫 번째 비밀번호는 두 번째 단계의 ARGUEMENTS에 있는 비밀번호에 해당하고, 두 번째 비밀번호는 비밀번호는 두 번째 단계의 OUTPUT 결과에 해당하며, 양식에는 그림과 같이 ENC(사용자 비밀번호)가 포함되어야 합니다.

4단계: 명령을 통해 비밀번호 암호 해독

명령 실행

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBESTringDecryptionCLI input="nhyL4CzSQv/aPxoe7TzpOQ==" 비밀번호=테스트 알고리듬= PBEWithMD5AndDES

결과는 아래와 같습니다.

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법

드디어 springboot와 jasypt의 통합이 꽤 완성된 것 같습니다. 하하. 하지만 한 가지 주의할 점은 구성 파일(특히 개인 키에 해당하는 ARGUMENTS의 비밀번호)을 유출해서는 안 된다는 것입니다. 그렇지 않으면 4단계를 통해 다른 사람이 귀하의 비밀번호를 해독할 수 있으므로 구성 파일을 유출하는 것이 좋습니다. 구성 센터

위 내용은 SpringBoot가 구성 파일의 SQL 계정 비밀번호를 암호화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제