|
发表于 2020-6-16 11:00:01
|
显示全部楼层
des?
=== 我的方案===
假设你要发行 10万张卡。
1。使用一个密码学安全的伪随机数生成算法,使用master key(即系统的初始seed) ,生成10万个足够大的随机数,20-30位10进制数。并保存在一张表格(PRGN_TABLE)中;
2。把随机数印在卡上,当然要把随机数遮起来:)(类此手机冲值卡),用户购买卡后,获得随机数(即密码);
3。用户冲值时,输入该随机数,服务端在表中查找,如有。说明是合法用户,进行冲值,否则拒绝。
安全性:
不购买卡的用户能否猜测到PRNG_TABLE中的数字,或者购买了若干张卡的用户能否根据已获得数据,猜测出PRNG_TABLE中的数字呢?
答案是:概率几乎是0。
* master key 是要保密的,否则别人可以根据你的算法和初始值产生出相同的表格;
如何获得 密码学安全的伪随机数, google "PRNG"
|
|