一种加密主密钥的方法
One way encrypting primary key
我可以用来消化电子邮件的最佳单向排列函数是什么,这样我就可以将它用作主键而不存储个人数据?
我正在准备我的第一个 F2P 游戏:一个基于瞄准机制的简单但(希望)令人上瘾的 2D 休闲益智游戏。它是用 Unity 制作的,很快就会在 Android 上发布。
为了让玩家在不同的设备上保持相同的数据,我有一个 SQL table 以设备电子邮件作为主键,然后另一个字符串作为游戏存档数据.
但出于隐私原因,我不想存储用户电子邮件。
所以我想用一些函数来消化它,使用原始电子邮件生成一个新字符串:
- 是唯一的(永远不会与从不同电子邮件地址生成的另一个字符串冲突)
- 不可破译(应该无法从消化的字符串中获取原始电子邮件 - 或者至少应该足够困难)
这样我仍然可以使用 Android 设备电子邮件来检索游戏存档数据,而无需存储玩家的个人数据。
据我研究,该解决方案似乎被称为单向置换函数。问题是我似乎无法在互联网上找到合适的功能;相反,所有答案似乎都受到密码散列解决方案的困扰,这非常有趣(salting,MD5,SHAXXX ...)但不符合我的第一个不冲突的要求。
预先感谢您对此主题的任何回答。
您需要的是加密哈希函数,例如 SHA-256。这些函数被设计成抗碰撞的,Git 使用旧版本的 SHA-1。大多数 languages/systems 都支持此功能,只需 Google "Android SHA-256" 以及您选择的语言。
一个选项是附加创建时间戳。
更新:由于 SHA-256 不提供足够的抗碰撞性,请考虑 s GUID,来自 RFC 4122:"A UUID is 128 bits long, and can guarantee uniqueness across space and time."。当然你需要找到一个好的实现。
我可以用来消化电子邮件的最佳单向排列函数是什么,这样我就可以将它用作主键而不存储个人数据?
我正在准备我的第一个 F2P 游戏:一个基于瞄准机制的简单但(希望)令人上瘾的 2D 休闲益智游戏。它是用 Unity 制作的,很快就会在 Android 上发布。
为了让玩家在不同的设备上保持相同的数据,我有一个 SQL table 以设备电子邮件作为主键,然后另一个字符串作为游戏存档数据.
但出于隐私原因,我不想存储用户电子邮件。
所以我想用一些函数来消化它,使用原始电子邮件生成一个新字符串:
- 是唯一的(永远不会与从不同电子邮件地址生成的另一个字符串冲突)
- 不可破译(应该无法从消化的字符串中获取原始电子邮件 - 或者至少应该足够困难)
这样我仍然可以使用 Android 设备电子邮件来检索游戏存档数据,而无需存储玩家的个人数据。
据我研究,该解决方案似乎被称为单向置换函数。问题是我似乎无法在互联网上找到合适的功能;相反,所有答案似乎都受到密码散列解决方案的困扰,这非常有趣(salting,MD5,SHAXXX ...)但不符合我的第一个不冲突的要求。
预先感谢您对此主题的任何回答。
您需要的是加密哈希函数,例如 SHA-256。这些函数被设计成抗碰撞的,Git 使用旧版本的 SHA-1。大多数 languages/systems 都支持此功能,只需 Google "Android SHA-256" 以及您选择的语言。
一个选项是附加创建时间戳。
更新:由于 SHA-256 不提供足够的抗碰撞性,请考虑 s GUID,来自 RFC 4122:"A UUID is 128 bits long, and can guarantee uniqueness across space and time."。当然你需要找到一个好的实现。