擅长:python、mysql、java
<p>从你写的来看,你显然没有很好地研究这个话题。。。我建议这样做,<strong>和</strong>找一个知道他/她在做什么的人。在</p>
<p>仅仅寻找python实现并不能解决您的问题。在</p>
<p>简单地,<strong>加密不可能</strong>以这种方式安全地实现到任何项目中。在</p>
<p>但是。。。如果您有一些值(如序列号、帐号)可以用作每个PIN的密钥派生(因此每个PIN都是不同的),那么流密码可能适合您的场景。。。在</p>
<p>我写<strong>可能</strong>,因为没有额外的信息和对你的项目的仔细观察,是不可能知道的</p>
<p>因此,请将此视为一个可能合适的解决方案,但不能保证是合适的</p>
<p>所以你要做的是:用一个像PBKDF这样的函数,把你的静态密钥,以及每个PIN的值,得到每个PIN的唯一密钥</p>
<p>把这个密钥输入一个类似RC4的流密码,然后从密码的输出中删除一个方便的字节数,比如RC4的前256个字节(只要把它们扔掉,就可以使对密码的一些可能的攻击变得更加困难)。。。在</p>
<p>现在取下一个14位密码输出,将它们作为一个数字进行异或</p>
<p>结果数字将在0到16384之间</p>
<p>如果需要的范围必须是0000到9999</p>
<p>将14位输出视为一个数字,只需将其添加到管脚模10000</p>
<p>要拿回你的PIN,再计算一下这个14位的值,从密文中减去它,再加上20000模10000来弥补负值,你就得到了这个PIN</p>
<p>作为旁注。。。这里并不需要流密码,因为您已经可以使用PBKDF的输出,因为您的纯文本非常小。。。但是PBKDF是用来导出一个密钥。。。不是密码本身</p>