Spring AESのCBCで暗号化するサンプル

Spring AESのCBCで暗号化するサンプルです。
(確認環境:Spring 5.3.7、JDK 11、STS 4)

目次

サンプル AESのCBCで暗号化するサンプル
  AESのCBCで暗号化するサンプル(TestAes.java)
  開始するファイル(StartApplication.java)
  設定ファイル(applicationContext.xml)
  pom.xml

AESのCBCで暗号化するサンプル

TestAes.javaで文字列の暗号化と復号を行います。

 

AESのCBCで暗号化するサンプル(TestAes.java)

public static TextEncryptor text(CharSequence password, CharSequence salt)
String encrypt(String text)
String decrypt(String encryptedText)
package com.example.test1;

import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.security.crypto.encrypt.TextEncryptor;
import org.springframework.stereotype.Component;

@Component
public class TestAes {
	public void chkPassword() {
		String inputStr = "あいうえお"; // 文字列
		String pass = "123"; // pass
		String salt = "abcd"; // Salt

		TextEncryptor textEncryptor = Encryptors.text(pass, salt); // Salt入り

		String code1 = textEncryptor.encrypt(inputStr); // 暗号化
		System.out.println("暗号化=" + code1);
		// 暗号化=240674b22ddd78962bffecc7fc0be5794fa475221449bbc9f3f2c3e82e735d43

		String code2 = textEncryptor.decrypt(code1); // 復号
		System.out.println("復号=" + code2); // 復号=あいうえお
	}
}

11行目のpassは、秘密鍵の生成に使用されるパスワードです。
12行目はsaltです。

14行目は、textメソッドを使用しています。これは「標準の」テキスト暗号化です。
delux​メソッドを使用するとより強力な暗号化になります。以下の公式のJavaDoc参照願います。

16行目は、文字列を暗号化しています。
20行目は、暗号化した文字列を復号しています。

https://spring.pleiades.io/spring-security/site/docs/current/api/org/springframework/security/crypto/encrypt/Encryptors.html#text(java.lang.CharSequence,java.lang.CharSequence)

 

開始するファイル(StartApplication.java)

package com.example.test1;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class StartApplication {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = 
				new ClassPathXmlApplicationContext("applicationContext.xml");
		TestAes testAes = context.getBean(TestAes.class);	
		testAes.chkPassword();
		context.close();
	}
}

 

設定ファイル(applicationContext.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

	<context:component-scan base-package="com.example.test1" />
</beans>

 

pom.xml

		<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-core</artifactId>
			<version>5.6.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.3.7</version>
		</dependency>

4行目は、spring-security-coreを指定しています。

関連の記事

SpringBoot フォームで入力チェック(バリデーション)

△上に戻る