数据库用户名、密码进行非对称加密

文章介绍了如何在Java项目中使用jasypt-spring-boot-starter库进行加密解密操作。首先在pom.xml文件中引入依赖,然后在resources目录下创建key文件夹,存放公钥和私钥文件。接着创建测试类EncryptTest,配置公钥和私钥路径,进行加密和解密测试。测试结果显示加密解密功能正常工作。
摘要由CSDN通过智能技术生成

1、在pom文件中引入依赖

    <!-- 对配置文件中的数据进行加密 -->
    <dependency>
      <groupId>com.github.ulisesbocchio</groupId>
      <artifactId>jasypt-spring-boot-starter</artifactId>
      <version>3.0.4</version>
    </dependency>

2、在项目resources文件夹中新建文件夹“key”。并添加以下三个公钥和私钥文件


命名:private.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzgdvW9uvYoqzlAXpM7gsBxCaRGrt1h9fIwWYfZUDO9qEI+S5
h9jmPhfglnX0O8s05p1pWU1YbDqCR4kIiAyv5RKe1HJd3BxJ1kp+Y/soBjNYqXvi
gkn90TgQE9Ip1t+LR5kRMgRbwSvvFqXm0aId7468g8LxyavjHRfJy7uuiVVCw8qC
h7HBdsIn/p3oS7yi64qbooRc+VQv+/NLFLeL0izENXgpzCJEK/4Yy2ttrP6LODqP
3fGmbjy2eNcOV2JkWGio/Akcr0K1+JsvW4wOGDn9Atr1hzMgo9lpjjiBkRfzxrYN
YMiKLO+AKW6WApzQmWuoSAEEPs9yq4yua5UY9wIDAQABAoIBACiKjf8lW32ojW2z
PBBRTViWi8SqxeI8ihv6HeeYSuqcNSRa/acdpzDQwgDZdRXPBrnaf8By19N0L+6j
qGodFP+eimKDnrSRXHYucnB6G4Yc1HWFSy0YIjnpLkC4OkNt+Zo9JIUTFnsMih+K
xcC6hel9zNqgobNtf2NaKvtMEywyoGH/XD55rrQ24vqrIkb+yKjbMPA45ELaUsmk
gWdS9CR2uA40dQg4JEmghvjidD1MaNrTndeNnSEZzdyiRulksA0gdfuqGRJMtVHJ
tzkY7Q0ahpTk9Fn9jfUy3Uos6c+8rnzrA1TnXoIM9qjwl+9oBxK0/WxXUsmTCxbs
PeVuygECgYEA7VL1CgB2SB4CmnaMHhcVkJjBYL3RFRvM7Q6zLK4DWpfMQDBP1Bal
6mIRfnpBq/ksHKbIcvv4j5e86eADgoXxPpTnXZfJn0jy11cYikaelHp9Zzej9xOt
KslxR/s0v0uYvFj9GeWrS9DqwOMzY6Dw04RyGUVszmLYt8xXcNHTUL8CgYEA3j4F
Jf2WDRSqw9A0ydiFuoJaL94nH0tzxleB9sggRbnYAlWVh/ViDsu7/tCoixO6zlhY
NrSk09iVvEVKQ84JGVcv7C7i+BJYnJii3O048jD2ADUR93wPphOPyLM1i7UrZpAn
eicM+jPFXkig0TDCaS0xI6D53YssUJb2kwGvDckCgYBhmlGOqHv80uLNNd4Qbfv/
eONm7wnzPXi9MeN8h6B3fKCS8YuTNTFNQMHjG1Kw8Iw0yF798yTZoVUfdnLbFk0O
KN0yf797E9xTtc0w6TRE6k9yyM5VSjFYvHorWWPrHKMXKx4ErZESYDx70bULz1/c
DceDHytNgheRF6gKjTD0LwKBgQDG4YmJ7d0R56TJhtE2sGU7+trqa0tnXgZFQJo1
VfJLc3wy2pPuD1GpG/kol2G80/MgJT8L9axrSC73RKqo8wCBhNyF54+FoCVcPdvB
CSkk01vR46woZQU8AdVyLa2FUKN+LRKm5btfTGUbcrM3gQL5TE/lKnFwKNOHaxFN
jPwywQKBgQCIAjJKfSDVli23lWB6ZCNBtiJAYPrYgQEWfeuiZ6dV+LSXHRUKCXT9
Z9Tzp/sc/wHz/fdE08uCjuMkYuN0VLplQcpUvHvhAxxghM4fsZJO9M68jYtd05vi
2XhJ8Ek26M3Jruef+Wgwf3QW0MJfyRTK23QQeCnQj3pSlqXaUKxQsw==
-----END RSA PRIVATE KEY-----

命名:privatepkcs8.pem

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDOB29b269iirOU
BekzuCwHEJpEau3WH18jBZh9lQM72oQj5LmH2OY+F+CWdfQ7yzTmnWlZTVhsOoJH
iQiIDK/lEp7Ucl3cHEnWSn5j+ygGM1ipe+KCSf3ROBAT0inW34tHmREyBFvBK+8W
pebRoh3vjryDwvHJq+MdF8nLu66JVULDyoKHscF2wif+nehLvKLripuihFz5VC/7
80sUt4vSLMQ1eCnMIkQr/hjLa22s/os4Oo/d8aZuPLZ41w5XYmRYaKj8CRyvQrX4
my9bjA4YOf0C2vWHMyCj2WmOOIGRF/PGtg1gyIos74ApbpYCnNCZa6hIAQQ+z3Kr
jK5rlRj3AgMBAAECggEAKIqN/yVbfaiNbbM8EFFNWJaLxKrF4jyKG/od55hK6pw1
JFr9px2nMNDCANl1Fc8Gudp/wHLX03Qv7qOoah0U/56KYoOetJFcdi5ycHobhhzU
dYVLLRgiOekuQLg6Q235mj0khRMWewyKH4rFwLqF6X3M2qChs21/Y1oq+0wTLDKg
Yf9cPnmutDbi+qsiRv7IqNsw8DjkQtpSyaSBZ1L0JHa4DjR1CDgkSaCG+OJ0PUxo
2tOd142dIRnN3KJG6WSwDSB1+6oZEky1Ucm3ORjtDRqGlOT0Wf2N9TLdSizpz7yu
fOsDVOdeggz2qPCX72gHErT9bFdSyZMLFuw95W7KAQKBgQDtUvUKAHZIHgKadowe
FxWQmMFgvdEVG8ztDrMsrgNal8xAME/UFqXqYhF+ekGr+Swcpshy+/iPl7zp4AOC
hfE+lOddl8mfSPLXVxiKRp6Uen1nN6P3E60qyXFH+zS/S5i8WP0Z5atL0OrA4zNj
oPDThHIZRWzOYti3zFdw0dNQvwKBgQDePgUl/ZYNFKrD0DTJ2IW6glov3icfS3PG
V4H2yCBFudgCVZWH9WIOy7v+0KiLE7rOWFg2tKTT2JW8RUpDzgkZVy/sLuL4Elic
mKLc7TjyMPYANRH3fA+mE4/IszWLtStmkCd6Jwz6M8VeSKDRMMJpLTEjoPndiyxQ
lvaTAa8NyQKBgGGaUY6oe/zS4s013hBt+/9442bvCfM9eL0x43yHoHd8oJLxi5M1
MU1AweMbUrDwjDTIXv3zJNmhVR92ctsWTQ4o3TJ/v3sT3FO1zTDpNETqT3LIzlVK
MVi8eitZY+scoxcrHgStkRJgPHvRtQvPX9wNx4MfK02CF5EXqAqNMPQvAoGBAMbh
iYnt3RHnpMmG0TawZTv62uprS2deBkVAmjVV8ktzfDLak+4PUakb+SiXYbzT8yAl
Pwv1rGtILvdEqqjzAIGE3IXnj4WgJVw928EJKSTTW9HjrChlBTwB1XItrYVQo34t
Eqblu19MZRtyszeBAvlMT+UqcXAo04drEU2M/DLBAoGBAIgCMkp9INWWLbeVYHpk
I0G2IkBg+tiBARZ966Jnp1X4tJcdFQoJdP1n1POn+xz/AfP990TTy4KO4yRi43RU
umVBylS8e+EDHGCEzh+xkk70zryNi13Tm+LZeEnwSTbozcmu55/5aDB/dBbQwl/J
FMrbdBB4KdCPelKWpdpQrFCz
-----END PRIVATE KEY-----

命名:public.pem

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzgdvW9uvYoqzlAXpM7gs
BxCaRGrt1h9fIwWYfZUDO9qEI+S5h9jmPhfglnX0O8s05p1pWU1YbDqCR4kIiAyv
5RKe1HJd3BxJ1kp+Y/soBjNYqXvigkn90TgQE9Ip1t+LR5kRMgRbwSvvFqXm0aId
7468g8LxyavjHRfJy7uuiVVCw8qCh7HBdsIn/p3oS7yi64qbooRc+VQv+/NLFLeL
0izENXgpzCJEK/4Yy2ttrP6LODqP3fGmbjy2eNcOV2JkWGio/Akcr0K1+JsvW4wO
GDn9Atr1hzMgo9lpjjiBkRfzxrYNYMiKLO+AKW6WApzQmWuoSAEEPs9yq4yua5UY
9wIDAQAB
-----END PUBLIC KEY-----

3、编写EncryptTest.java测试类

import static com.ulisesbocchio.jasyptspringboot.util.AsymmetricCryptography.KeyFormat.PEM;

import org.jasypt.encryption.StringEncryptor;
import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.springframework.boot.test.context.SpringBootTest;

import com.ulisesbocchio.jasyptspringboot.encryptor.SimpleAsymmetricConfig;
import com.ulisesbocchio.jasyptspringboot.encryptor.SimpleAsymmetricStringEncryptor;

import lombok.extern.slf4j.Slf4j;

@SpringBootTest
@Slf4j
public class EncryptTest {

    @Test
    public void testEncrypt() {
        final SimpleAsymmetricConfig config = new SimpleAsymmetricConfig();
        config.setPublicKeyFormat(PEM);
        config.setPrivateKeyFormat(PEM);
        config.setPublicKeyLocation("classpath:key/public.pem");
        config.setPrivateKeyLocation("classpath:key/privatepkcs8.pem");
        final StringEncryptor encryptor = new SimpleAsymmetricStringEncryptor(config);
        final String message = "admin";
        final String encrypted = encryptor.encrypt(message);
        log.info("Provided String {}", message);
        log.info("Encrypted message {}\n", encrypted);
        final String decrypted = encryptor.decrypt(encrypted);
        Assertions.assertEquals(decrypted, message);
        log.info("decrypted message {}", decrypted);
    }
}

4、运行测试

最终生成密码:

RjP7G81AO5rL+1CC/HYxFc832KdCOlnsSrBLS+ooqL5w99/nKHqn7WKrTEnHQabHg7QW7vGO8qA+Wsefjb74GjWMI+NKfGTsb5UOF432+0RmnP57FenaCsv32AN5Ax70CrjFpxTp/D+hWkQH6KXJ+FK7vLN/zTc04m9OhEgJXJU7630n0HQ3ZuPElqGT8Im6CNNB73HDagWFEUIJXIB/f0orwupYhmiCCMGrcz6ATauz7klwnfPwkIhNSZqh05XCWDx4abJYDRosv8pZG7B4F7eYfh+U2oRH+mewGX1/WGZuMeKhYPANVtjXPtLcaRa8IJtqxuDKkOWO+oj7kuz7kA==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在存储数据库用户名密码时,为了保护用户信息的安全性,我们通常需要对其进行加密存储。下面是一些常见的加密存储方法: 1. 哈希加盐 哈希加盐是一种常见的密码加密方法,它可以将密码转换为一个固定长度的哈希值并加入一个随机字符串(盐)进行混淆,从而增加密码的安全性。在存储密码时,我们只需要将密码加盐后的哈希值存储到数据库中即可。当用户输入密码时,我们首先获取其输入的密码,然后将其加盐后进行哈希运算,最后与数据库中存储的哈希值进行比对来验证密码的正确性。 2. 对称加密 对称加密是一种将明文转换为密文的加密方法,它使用相同的密钥来加密和解密数据。在存储用户名密码时,我们可以使用对称加密算法(如AES)将其加密后存储到数据库中。当需要使用这些信息时,我们只需要使用相同的密钥来解密即可。 3. 公钥加密 公钥加密是一种使用公钥加密数据、使用私钥解密数据的加密方法。在存储数据库用户名密码时,我们可以使用公钥加密算法(如RSA)将其加密后存储到数据库中。当需要使用这些信息时,我们需要使用私钥来解密。 需要注意的是,无论采用哪种加密存储方法,我们都需要确保密钥的安全性。如果密钥泄漏,那么加密的数据就会被攻击者轻易地解密,从而导致用户信息的泄露。因此,我们需要采取一系列措施来保护密钥的安全性,如使用安全的密钥管理方案、限制密钥的访问权限等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值