Rumah >Java >javaTutorial >Bagaimanakah but spring menyulitkan dan menyahsulit maklumat sensitif?
Kami menggunakan versi terkini jasypt untuk menyulitkan dan menyahsulit maklumat sensitif.
1. Tambahkan kebergantungan berikut pada fail pom projek:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
2 Buat kelas awam untuk penyulitan dan penyahsulitan:
package com.myproject.common.utils; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; public class JasyptUtil { /* * textToEncrypt,需要加密的明文 * salt,加密的盐,需要与解密保持一致 * algorithm,加密算法,需要与解密算法保持一致 */ public static String encrypt(String textToEncrypt, String salt, String algorithm) { // 1. 创建加解密工具实例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); // 2. 加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(salt); // 3. 加密算法,需要与解密算法一致 config.setAlgorithm(algorithm); // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置 config.setKeyObtentionIterations( "1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); config.setStringOutputType("base64"); encryptor.setConfig(config); // 4. 加密 return encryptor.encrypt(textToEncrypt); } /* * textToDecrypt,需要解密的密文 * salt,解密的盐,需要与加密保持一致 * algorithm,解密算法,需要与加密算法保持一致 */ public static String decrypt(String textToDecrypt, String salt, String algorithm){ // 1. 创建加解密工具实例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); // 2. 加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(salt); // 3. 解密算法,必须与加密算法一致 config.setAlgorithm(algorithm); // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置 config.setKeyObtentionIterations( "1000"); config.setPoolSize("1"); config.setProviderName("SunJCE"); config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator"); config.setStringOutputType("base64"); encryptor.setConfig(config); // 4. 解密 return encryptor.decrypt(textToDecrypt); } }
3 yml file Selain kaedah di atas, kaedah berikut juga boleh digunakan untuk penyulitan.
Masukkan direktori dependency jasypt Di sini, gunakan versi terkini jasypt, jasypt-1.9.3.jar, dan jalankan arahan cmd
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="mypassword" password=mypassword algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator
Kata laluan di bawah OUTPUT dalam gambar Teks ialah teks sifir yang disulitkan Hanya salin ke fail konfigurasi Semasa menyahsulit, gunakan kod untuk menyahsulit.
Antaranya: input: kata laluan teks biasakata laluan: garam untuk ditambah, kunci rahsia
algoritma: algoritma penyulitan
PBEWITHHMACSHA256ANDAES_256
PBEWITHHMACSHA384ANDAES_128PBEWITHHMACSHA384ANDAES_256PBEWITHHMACSHA384ANDAES_128
PBEWITHHMACSHA384ANDAES_256
PBEWITHHMACSHA512
PBEWITHHMACSHA ANDAES_256
PBEWITHMD5ANDDES
PBEWITHSHA1ANDTRIPLEDES
PBEWITHSHA1ANDDESEDE
PBEWITHSHA1ANDRC2_128
PBEWITHSHA1ANDRC2_40
PBEWITHSHA1ANDRC4_128
PBEWITHSHA1ANDRC4_40
4. Jika versi jdk yang digunakan ialah java1.8 atau java8, maka ia perlu dinaik taraf Untuk jre dan jdk
, anda perlu memuat turun jce-policy-8.zip Selepas memuat turun, nyahzipnya, yang mengandungi kaedah naik taraf.
Atas ialah kandungan terperinci Bagaimanakah but spring menyulitkan dan menyahsulit maklumat sensitif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!