随意生成 16 位数字 x = 3938208956888434,密钥函数 f(x)是:取 x 的第 2-5 位数字( 9382 ),与第 8~13 位数字( 956888 )的倒序相乘。即 f(x) = 9382 * 888659 (输出结果为:y = 8337398738 )
以现代计算机的速度和算法,破解上面这种情况的函数 f(x),大约需要多少时间?
1
lhx2008 2018-12-31 13:03:56 +08:00 via Android 1
这是 hash,不是对称加密,如果要构造一个同 hash 的值估计也不难,因为位数不大,暴力法分分钟
|
2
PPing520 2018-12-31 13:04:47 +08:00
.....其他位都不要了么?那 2-5 位和 8~13 位一样的数字加密结果不就重复了。。。
|
3
Bryan0Z 2018-12-31 13:05:57 +08:00 via Android
这不是对称加密吧,你怎么逆解回来
|
4
ZRS 2018-12-31 13:10:01 +08:00 via iPhone
这不叫对称加密
|
5
liudaqi OP 预期的结果是大约 10 分钟之内,一般的计算机解不出来就行了。f(x)大约一周会自动更新一个。
|
6
Kagari 2018-12-31 13:21:04 +08:00
对称加密的秘钥长度…………不好意思走错片场了,欢迎自制加密算法
|
7
2exhjx 2018-12-31 13:23:06 +08:00
最暴力也就 100w*1w,100 亿次运算,1gh=10 亿次,你说要多久?
|
8
loading 2018-12-31 13:25:29 +08:00
楼主,你这个如何解密。写个反函数出来吧。
|
9
2exhjx 2018-12-31 13:31:17 +08:00 1
随便优化一下,因数分解 O ( n^(1/4)),再把分解出来的组合到你的数据范围里就出来了
|
10
873681136 2018-12-31 13:31:58 +08:00
这个摘要几乎没有什么意义,如果我第 2-5 位数字为 0000,那么我无论怎么算 f(x) 都是 0
|
11
2exhjx 2018-12-31 13:32:49 +08:00
4691*2*888659,都不用算啊楼主
|
12
xiri 2018-12-31 14:28:48 +08:00 via Android 2
这不是对称加密,或者说这都不能被叫做加密。
楼主的算法中用到了大数分解难题的思想(得到两个数相乘的结果是很容易的,但要将一个大数分解成两个符合条件的数相乘则很难),这已经是属于非对称领域的了。 另外,作为一个加密的算法,必须需要有一固定的解密算法才有意义。现有的非对称加密利用了数学规律,将加密结果按一特定规则继续计算下去最终可以得到原有值。而在楼主给的例子中,恕我无能为力,找不到可以解密的方法。 所以就像#10 楼说的,这只能算一个摘要算法,并且还是个没啥意义的摘要算法。 |
13
lance6716 2018-12-31 15:35:14 +08:00 via Android
这也不是摘要啊,输入长度有限制,输出不等长
|
14
singerll 2018-12-31 15:51:19 +08:00 via Android
怎么解密?
|
15
everwanna 2018-12-31 17:58:47 +08:00 via Android
先学习一点点现代密码学的基础知识再谈加密
|
16
marcushbs 2019-01-01 01:42:53 +08:00 1
土法加密难倒老师傅
|
17
allenhu 2019-01-01 08:54:29 +08:00 via Android
古法加密
|