这两天遇到个奇怪的需求,如标题
只能靠猜吧
密码学的基本原则是,算法都是公开的,密钥是保密的。
假设你看到了“密码”字符串,你需要阅读对应的算法,才能知道这个字符串是如何编码的。
看看是不是16进制或者base64?
加密字符串有一个特点是 基于byte,加密出来的很可能不是可读可输入的文字。
长度吧,一般加密了都很长
可以计算字符串的香农熵。一般来说,加密后的密码具有较高的熵值。
如果字符串是Base64编码格式,可以尝试对其进行解码,然后观察解码后的内容。如果解码后的字符大部分是可打印的字符,原字符串可能是明文密码。
赛博厨子中有个 entropy 可以检测一段字符串的熵值来猜测是否加密
学习了
还有这宝贝,谢谢分享
没法判断,我设置密码如果在长度允许的情况下,都是随机生成一段UUID作为密码,或者一段长度32个长度(128位)的16进制数,所以这个情况实际上是明文密码,但是看起来像加密过的
靠猜,熵值也是猜啊
熵试过了,不行
那假如说我在密码的前后段都拼接一长串的无意义字符,得到的这个字符串是属于明文密码还是属于加密密码呢?
密码应该都是ascii字符, 加密后的会出现非ascii字符, 如果字符串是ascii字符, 而且不是base64编码的, 或者base64解码后依旧是 ascii字符, 就可以判断是明文了, 否则应该是"加密"过的
这个本身就是一个有悖论的需求,通过某些算法可能可以让你一定程度的判断是否密文,但是实际上都是不准确的。我觉个例子,字符串“ e10adc3949ba59abbe56e057f20f883e”,你怎么来确定这个是MD5加密的123456,还是本身密码就是“ e10adc3949ba59abbe56e057f20f883e”。
如果要准确确定这块,我觉得只能通过“社会工程学”了,你找到传这个字符串的人请他抽根烟,问他,兄弟你这传的是明文还是密文?