gpt4 book ai didi

mysql - 使加密字段的值唯一

转载 作者:行者123 更新时间:2023-11-29 09:35:07 26 4
gpt4 key购买 nike

JavaEE 应用程序使用 Jasypt 简单加密器来加密使用 JPA 存储在 MySQL 数据库中的用户名。

由于用户名已加密,无法使用户名列唯一。 (请参阅下面的用例。)

可以在保存新用户名之前执行搜索以避免重复,但理论上有可能同时创建多个用户名。

Encrypt('username','key') = 'EncryptedUsername'

Decrypt('EncryptedUsername','key') = 'username'

情况 1 - 已在数据库中

  • 用户名1 = 'a'

  • Key1 = '1'

  • EncryptedValue1 = 'XXXX'(假设)

案例 2 - 要添加新用户名

  • 用户名2 = 'b'

  • Key2 = '2'

  • EncryptedValue2 = 'XXXX'(假设)

案例 3 - 要添加另一个新用户名

  • 用户名3 = 'a'

  • Key3 = '3'

  • EncryptedValue3 = 'YYYY'(假设)

必须允许情况 2。

不允许出现情况 3

我无法通过使存储加密值的字段唯一来实现这一点。

如果我将其设置为唯一,则在情况 2 中将不允许添加新用户名“b”。这是错误的,因为现有用户名“a”与新用户名“b”不同。

在情况 3 中,它还允许添加“a”作为用户名,因为加密值不同。

如何确保用户名在加密后保持唯一?

最佳答案

使用应用程序范围 bean 搜索提供的用户名。如果未找到新用户名,请使用新用户名创建用户。如果找到该用户名,请向该用户索要另一个用户名。由于只有一个地方可以执行此功能,因此不会出现重复。

关于mysql - 使加密字段的值唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57833606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com