首页 > 解决方案 > 将一个数字加密为特定字段中的另一个数字

问题描述

例如,现在我想加密我的生日 19960609,如果我使用其他一些保留格式的加密,我会得到一个不像生日的数字。但是,我想要我的加密生日,例如 19870928,它位于特定字段中。以生日为例,该字段类似于 [19000101,20191117]。我想知道是否有任何解决方案可以将一个数字加密为特定字段中的另一个数字,并且这个加密的生日也可以恢复到原始值。

标签: encryption

解决方案


您可能想要搜索术语encoding。字符串“19960609”只是日期值 09/06/1996 的编码表示。

为了让您了解算法(ROT13的变体):

// find the number of days between the start of your interval and the to be encoded date
a := COUNT_DAYS_BETWEEN(19960609, 19000101)
// find thesize of your interval
b := COUNT_DAYS_BETWEEN(19000101, 20191117)
// add or subtract a choosen number 
c := a - 3567 
// take care that it still fits into your interval
d := MODULO(c, b)

由于该算法只是将生日改变了一些选定的日子,因此它是可逆的。随意用更复杂的算法替换 c 中的操作。


推荐阅读