当前位置:  开发笔记 > 编程语言 > 正文

所有加密使用的= =最后一个

如何解决《所有加密使用的==最后一个》经验,为你挑选了1个好方法。

我知道大多数base64编码最后都有==.有没有其他用途做同样的事情?例如,我发现了这一点

nijdRcCHIUnketWzFbcxmvqQKKDnFW05LSE3ttTjoqyBna7JT87AwxeKdoOszXYODMRm6UfA8jK97qgV8A ==

但它不是base64类型.还有什么呢?



1> zwol..:

您发布的字符串是有效的Base64字符串.

==当且仅当它编码的字节数mod 3等于1时,Base64字符串才会结束.

>>> for i in range(10):
...   print(i, base64.b64encode(b"\x00"*i))
... 
0 b''
1 b'AA=='
2 b'AAA='
3 b'AAAA'
4 b'AAAAAA=='
5 b'AAAAAAA='
6 b'AAAAAAAA'
7 b'AAAAAAAAAA=='
8 b'AAAAAAAAAAA='
9 b'AAAAAAAAAAAA'

你看到了这种模式吗?

碰巧16字节(128位)加密密钥通常在Base64中编码,并且由于16 mod 3 = 1,它们的编码将以==.但你的字符串,解码后,长度为61个字节(488位).这是太大,是最各种各样的加密密钥,并过是一个RSA密钥.

这是您的字符串,已解码,然后是hexdumped:

00000000  9e 28 dd 45 c0 87 21 49  e4 7a d5 b3 15 b7 31 9a  |.(.E..!I.z....1.|
00000010  fa 90 28 a0 e7 15 6d 39  2d 21 37 b6 d4 e3 a2 ac  |..(...m9-!7.....|
00000020  81 9d ae c9 4f ce c0 c3  17 8a 76 83 ac cd 76 0e  |....O.....v...v.|
00000030  0c c4 66 e9 47 c0 f2 32  bd ee a8 15 f0           |..f.G..2.....|
0000003d

我没有看到任何东西告诉我它到底是什么,file(1)也是难过的.它可能是随机的,可以加密,但我无法用眼睛确定.(如果它随机的,那并不意味着它是加密的!它可能只是随机数生成器的输出.)

重要的是要了解Base64不是加密,因为它没有密钥.我不需要知道或猜测任何秘密信息来反转字符串的Base64编码.(术语'编码'可能令人困惑 - 它更通用.UTF-8,Base64和DEFLATE都是编码,AES-CBC也是如此,但在所有这些编码中,只有AES-CBC才是加密.)


谢谢你提供的信息.其他人则非常忙于将其标记为负面
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有