问一下大家什么叫做不可逆的加密算法? 目前我仅仅只是知道散列算法,取 hash 值。
例如 sha512
明文
123
密文
3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
解密逻辑就很简单了,找一台运算速度比较高的电脑生成所有字符串的组合。依次对比结果集,不久可以逆向出来密码了吗?
1
redeemer1001 2020-04-11 09:37:36 +08:00
hash 不是加密啊朋友…
|
2
nnnToTnnn OP @redeemer1001 我了解到的不可逆向的符合此特征似乎只有 hash 。不知道那种加密算法,可以不可逆,如果不可逆,那么加密出来的内容也无任何意义了。。。
> 我对加密算法不是很了解 T - T 这是我个人的理解。 望纠正 |
3
sunziren 2020-04-11 09:43:17 +08:00 11
给一个 2W 字的论文写一个 200 字的摘要,然后你能通过这 200 字的摘要还原出原来的论文吗?这就是不可逆 -逃
|
4
HTSdTt3WygdgQQGe 2020-04-11 09:44:12 +08:00 via Android
问题是计算速度多高
|
5
hanqi7012 2020-04-11 09:45:45 +08:00 via iPhone
摘要 能理解吧
|
6
maemual 2020-04-11 09:45:51 +08:00 via iPhone
“不可逆的加密算法”这个说法就是错误的,所以没有讨论的必要。
哈希散列根本不是加密算法 |
7
wizardoz 2020-04-11 09:48:35 +08:00 1
hash 是多对一的,你找到一个数据能够得到一样的 hash,但是这个数据未必是我当初的那个数据。
|
8
PopRain 2020-04-11 09:50:53 +08:00
散列不是加密,是防篡改。。。(更完善还要数字签名配合)
公开密钥就算是你说的“不可逆加密” ,根据公开的足够长的公开密钥,合理的时间内你不可能从密文得到原文。 |
9
lewinlan 2020-04-11 09:52:16 +08:00 via Android
可逆的意思是可以通过忽略不计的代价逆向计算,典型例子是公钥。
那种暴力破解不叫逆向。 |
10
chizuo 2020-04-11 09:55:24 +08:00
随便看一门网络安全的书或者课,就能解决你的疑惑。
|
11
xuanbg 2020-04-11 10:01:47 +08:00
不可逆的算法都不能叫加密算法,原因很简单,因为没法解密啊。
你这种还原的办法叫做暴力破解,不叫解密。比你的办法更好的办法是彩虹表,具体的自己可百度。 |
12
learningman 2020-04-11 10:04:37 +08:00 1
我这有个 170G 的游戏,现在我打成一个压缩包求个 MD5 抄在纸上,你能把他变回这 170G 吗
|
13
baoyexi 2020-04-11 10:12:01 +08:00 3
这回轮到 Shannon 的棺材板盖不住了
|
14
RickyC 2020-04-11 10:15:21 +08:00
不存在绝对不可逆的算法吧?
在有大数据的情况下, 把加密结果和待加密文字都匹配储存, 形成一个特别大的数据库, 对于广大用户来说, 应该不存在绝对安全的不可加密算法. |
15
hoyixi 2020-04-11 10:21:05 +08:00 1
用英文讨论很清晰,用中文很快把你绕晕,尤其抠字眼的学术派,和没有学习过术语的日常派,根本不在一个频道
|
16
harryhao 2020-04-11 10:23:41 +08:00
先区别加密算法和非加密算法,加密算法一般都是算法公开,密钥保密例如 aes,sha/md5 属于非加密算法, 算法公开,没有密钥
|
17
MOONLIGHTT 2020-04-11 10:26:26 +08:00
hash 主要用于防止需要传输的内容被非法篡改。虽然 hash 类似桶模型,存在一定的碰撞几率(不同的内容计算得到的 hash 值相同),但从数学上可以证明在篡改一些想更改的内容之后,再篡改一些无关内容使最终 hash 值相同是 [计算上不可行的] 。
|
18
rrfeng 2020-04-11 10:51:18 +08:00 via Android
不可逆和加密就是冲突的概念。
那你干脆删除数据,也是不可逆加密。反正不要原始数据了。 了解一下摘要 /签名 |
19
shadeofgod 2020-04-11 10:52:25 +08:00
要分清 Hashing 和 Encryption,前者是 one way 的,后者是 two way 的,中文语境下很多人都把这两个叫加密但是严格来说 hashing 不算加密。
说 hashing 是 one way 是因为没有办法通过逆转原有的 hash 过程来获取原本的数据,因为这个过程中往往会丢失一部分信息(比如取模运算是无法根据结果反向运算得到原来的数字),只能通过彩虹表之类的暴力碰撞方式。 |
20
iyear 2020-04-11 11:00:24 +08:00
hash 不是数据摘要么,和 rar 加密压缩完全不一样
这个可以:1G 片子->32 位 md5 这个不可以:32 位 md5->1G 片子 |
21
icyalala 2020-04-11 11:09:14 +08:00
"不可逆的加密算法"? 没这个说法。。。
不可逆那不叫加密。。 |
22
Xusually 2020-04-11 11:11:59 +08:00
md5 -s a
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 md5 -s abcdefghij MD5 ("abcdefghij") = a925576942e94b2ef57a066101b48876 md5 -s abcdefghij012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890 MD5 ("abcdefghij012345678900123456789001234567890012345678900123456789001234567890012345678900123456789001234567890") = fc82b0bfe7009c54326529881164994c ls -lh ubuntu-20.04-beta-desktop-amd64.iso -rwxrwxrwx@ 1 youtellme staff 2.6G 4 6 22:20 ubuntu-20.04-beta-desktop-amd64.iso md5 ubuntu-20.04-beta-desktop-amd64.iso MD5 (ubuntu-20.04-beta-desktop-amd64.iso) = d3eff3d41d9d32a0b8a87e4faf8aef25 md5 后的 hash 都是 32 位,那么 1 、10 、100 个字符,甚至下面 2.6GB 的文件,都是 32 位。 这不叫加密,这叫摘要,32 位的字符串,反向无法解密,信息丢失不可避免。参考 香农定理 |
23
cmdOptionKana 2020-04-11 11:13:46 +08:00
我好像突然明白楼主的意思了:
假设已知原文是三个数字,那么,从 000, 001, 002 开始算 hash,一直算到 999, 同时与 hash 对比,通过碰撞来“解密”。 在一定条件下,比如原文很短(三个字符),范围很窄( 0-9 ),这种方法也可以达到加密解密的目的。 但并不是一个好方法(太浪费算力,而且与正规加密方法相比也没啥优点)。 |
24
yulihao 2020-04-11 11:17:41 +08:00
@cmdOptionKana 要是密码真的像楼主那样那么简单,现在的 CPU 基本上都是秒吧?
|
25
huayumo 2020-04-11 11:19:36 +08:00
不可逆,你加密了有什么用?
|
26
lagoon 2020-04-11 11:22:51 +08:00
不可逆,直接销毁就是。干嘛加密?
另外,加密本身的定义,就和不可逆违背。 |
27
Godikov 2020-04-11 11:26:36 +08:00
不可逆还加什么密
|
28
neteroster 2020-04-11 11:30:19 +08:00
* Hash 也就是散列函数:给定一些数据,输出一个摘要。
「所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为散列碰撞( collision )。」——维基百科 也就是说:由于 Hash 的输出通常是固定长度,而输入的数据可以是任意长度,所以碰撞不可避免的存在。 也就是说:给定一个 Hash,通过穷举查找,不一定找到的是原来输入的数据,因为同一个 Hash 对应很多(也许是无穷多)个输入数据。 * 加密:给定一个密码,一些明文,输出一些密文。 结论:Hash 不是加密,更不是什么「不可逆加密」。 |
29
qwerthhusn 2020-04-11 11:39:49 +08:00
非可逆加密 RSA ECDSA
|
30
cmdOptionKana 2020-04-11 11:45:32 +08:00
|
31
xFrye 2020-04-11 11:54:16 +08:00
@qwerthhusn 你确定 RSA 是 “非可逆加密” ?
|
32
areless 2020-04-11 11:59:11 +08:00 via Android
加入 salt,你超算也没用。有个数学时间在里面的。比如 rsa 是可以破解的,大部分破解的理论值超过 20 年左右,所以密钥或者是 salt 是一年一更新才保证安全性
|
33
bluefalconjun 2020-04-11 12:00:40 +08:00
|
34
littlewing 2020-04-11 12:08:53 +08:00
不可逆还叫加密?那加密了有啥用
|
35
lostpg 2020-04-11 12:18:48 +08:00 via Android 1
我推荐一本书嗷,图解密码技术,这本书能解决多数人对密码学的大多数疑问。
|
36
mrcn 2020-04-11 12:24:54 +08:00 via Android
@learningman #12 歪个楼,magnet 可以,哈哈。
|
37
Jooooooooo 2020-04-11 12:42:38 +08:00
md5 就不可逆
把任意一个字符串映射到单个字符上也不可逆 |
38
wangxiaoaer 2020-04-11 12:44:20 +08:00 via Android
加密一定要能解密,你都不可逆了还加什么密?
|
39
JerryCha 2020-04-11 12:48:55 +08:00
一来 hash 不能加密,二来 hash 只是摘要,hash 函数都是一个无穷空间映射到有限空间的单向函数。
你的确可以穷举( brute-force ),那么你有钱有时间穷举吗。你要不以每秒穷举 2^32 个组合的速度算算穷举完 2^512 种结果需要多少年? |
40
jugelizi 2020-04-11 12:50:36 +08:00 via iPhone
月经贴
绝大部分十年经验的程序员都不分 hash 和加密的概念 反推的叫彩虹表 需要多大自己百度了再说 |
41
sunmker 2020-04-11 12:58:59 +08:00
这个不是大学都教过的吗……
|
42
wangyzj 2020-04-11 13:32:47 +08:00
可逆不可逆的都有
jwt 的 RS256 啥的那种是可逆的 md5 是不可逆的 |
43
EminemW 2020-04-11 14:02:47 +08:00
不可逆的不叫加密算法啊。。加密对应解密,不可解密的东西还叫加密算法?
|
44
24bit 2020-04-11 14:06:26 +08:00
message digest 消息摘要算法,不是加密算法吧
|
45
vachiko 2020-04-11 14:19:12 +08:00
MD5 就不可逆,但它不能称之为加密,顶多算是个算法,因为不防碰撞,属于多对一关系。
|
46
youxiachai 2020-04-11 14:22:25 +08:00 via iPad
这是半路转行的吗。。。为啥会问这么奇怪的伪命题。。
|
48
yeqizhang 2020-04-11 14:27:23 +08:00 via Android
既然加密那就要能解密吧。
不可逆的信息摘要算法,按我的理解是用来做特征,检验或者签名之类的。 |
49
mengzhuo 2020-04-11 14:30:04 +08:00
加密是为了解密的,熵不变;而哈希熵会减少。
|
50
p1gd0g 2020-04-11 15:02:00 +08:00
不久???
密码学研究生黑人问号。 |
51
nnnToTnnn OP @bluefalconjun 我知道非对称加密,看到帖子里面的不可逆的加密算法有点打破了我的认知,所以才发帖询问以下,原来所谓的 “不可逆的加密” 指的是信息摘要,我还以为有出现了新世界 T-T
|
52
nnnToTnnn OP @areless 加入 salt 也只是减少了碰撞的几率,但是理论上还是可以根据原文,和加密的内容来进行碰撞结果。只不过是算力的问题。
|
53
nnnToTnnn OP @youxiachai
可能我描述的有点歧义。 标题中表达了两个意思 1. 第一次听说过不可逆的加密算法,和我所接触到的知识有冲突,加密表示的一定会有解密,如果仅仅只能加密,这个文本将毫无意义,不可逆的加密算法也就无任何意义 2. 我仅仅只是知道散列算法,用来做信息摘要,但是就算是信息摘要算法,也可以通过算力来进行碰撞,也存在解密的可能性。 所以我很好奇,一。 不可逆的加密算法真实存在吗? 二。他是怎么做到防止碰撞的。 结果发现所谓的不可逆原来指的信息摘要。好了,那没事了。打扰了。。。 |
54
yidinghe 2020-04-11 15:35:58 +08:00
https://segmentfault.com/a/1190000015688203 [如何区分“转码”、“签名”和“加密”]
|
55
jhdxr 2020-04-11 15:42:24 +08:00
@nnnToTnnn
0. 目前我们平常使用的加密也好,哈希也罢,说的都不是绝对不可能还原,而是在能接受的时间内不可能被还原。注意这个能接受的时间也是相对概念,例如一个密文如果我们需要一天就能破解,通常我们会觉得这是能接受的,但破解完发现这个密文是每日开奖的彩票的号码,每次等你破解完,号码也已经公开了,那也就失去了破解的意义。 1. hash 进行碰撞,实现的也并不是解密。你碰撞出来的结果,未必是我的明文,只是两者哈希值一样 2. 目前的研究,只能做到已知明文 m,快速找出另外一个明文 n,使得 m 和 n 的哈希值相同 3. 目前依然做不到给定任意哈希值 h,快速找出其对应的(任意一个)明文 4. 通过穷举的方式去构造明文到哈希的映射,从而查表反推哈希对应的明文,在原理上可行的,在实际上也有人这么做(彩虹表)。但是如果你算一下储存需要占用的磁盘空间,就会发现以目前的技术,没法覆盖所有可能性 |
56
mainjzb 2020-04-11 16:00:25 +08:00
无法解密也是有意义的。
密码都按 MD5 存到数据库里。用户登录的时候只要看加密的密文是否相等就能判断用户是不是登录成功。 |
57
zlowly 2020-04-11 18:57:14 +08:00
1 、维基百科上解释,在密码学中,加密(英语:Encryption )是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。
2 、解密是加密的逆向过程。如果没有这个逆向过程,那么那个正向过程,无论你是叫它哈希还是摘要什么的,它就是不能叫加密。 |
58
dangyuluo 2020-04-11 19:04:58 +08:00
应该是翻译的问题,不可逆加密是没有意义的,毕竟加密是为了解密
|
59
cmdOptionKana 2020-04-11 19:51:50 +08:00
@nnnToTnnn “不可逆的加密算法” 这是一个非常别扭的说法,很可能你看到的那个贴子本来就说错了。
就好像如果有人把 ipad 称为 “不能打电话的 iphone 手机”,你一听就会觉得很别扭,你可能会想问对方是不是想说 ipad,并且你会想纠正他说 ipad 不是手机。 这就是上面大家说 hash 不是加密的原因。 “md5 等算法可以通过碰撞来进行实现可逆”,这个说法也是完全错误的,原因如下: 1. 比如 md5, 存在多个字符串(比如字符串 A 、B 和 C )对应同一个摘要的情况,即就算你碰撞出来了,你还是不知道原文究竟是哪个。 2. 像密码之类的短字符串还能尝试碰撞,但是你想想,如果是一张图片的 md5,你要怎么碰撞?把世界上所有图片都一一拿去试吗? 3. 所谓的“可逆”,是指数学上的可逆。碰撞不能称为可逆,而且在现实之中(见上面加密图片的例子)通过碰撞来“解密”是没有现实意义的。 这有点像一个著名的故事:给猴子一台打字机,它瞎敲无数遍之后,它甚至有可能敲出《罗密欧与朱丽叶》,但我们不会说猴子是大文豪。 |
60
infinet 2020-04-11 20:05:34 +08:00
楼主是不是指不可能破解的加密算法?有种算法绝对不可能破解:生成很多随机数写到光盘,然后复制一张光盘给对方,加密时把明文和光盘上的随机数 XOR,对方收到加密数据后同样和光盘上的随机数 XOR 得到明文。电影《潜龙轰天 2 》里好像有这个情节。
|
61
eric6356 2020-04-12 00:01:43 +08:00
你说的这个解密又叫做挖矿
|
62
20015jjw 2020-04-12 01:57:49 +08:00 via Android
看个教程 /随便看俩视频再来问真的不难..
|
63
HanShan63 2020-04-12 03:12:04 +08:00 via iPhone
不可逆你怎么解密,你这不叫加密,叫销毁
|
64
tsohgdivil 2020-04-12 06:30:45 +08:00
求一个写不出来字的笔
|
65
Quadox 2020-04-12 14:05:31 +08:00
在密码学中,加密(英语:Encryption )是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。——维基百科
所以不可逆的加密就不应该叫加密了啊? |
66
julyclyde 2020-04-13 20:30:17 +08:00
不是翻译导致的
是没文化导致的 |
67
lotosbin 2020-06-18 12:11:37 +08:00
不可逆 指的是 加密算法 不可逆运算,
比如移位加密,只要逆向移位 就是解密算法。 但是 RSA 算法是的解密算法 不是 加密算法的逆运算。 |