有没有一种方法可以检测一个十六进制/base64字符串是否真的被加密了,或者只是被编码了



我的问题是:是否有可靠的方法来检测十六进制/base64字符串是否真的被加密,或者只是被编码?

(我做了一个快速搜索,但我似乎只找到了加密和编码之间的区别,似乎没有说明如何检测加密…(

我不需要知道它是什么样的加密,只需检测它是否加密,如果不加密则发送错误,从而强制加密。

字符串大小可能从几个字节到千字节不等。。。

有没有一个C/C++库可用于此?

如果你认为你正在使用编码/加密的明文,最明显的做法是尝试使用各种标准编码进行解码,看看你得到的内容是否像普通英语,或者至少是你想要的内容。

除此之外,还有一些事情你可以尝试:

  • 如果你有一个完全加密的字符串,它将与随机噪声无法区分,所以如果你能在字符串中看到显著的相关性,你可能有不完全加密的数据,或者直接编码的明文。

  • 要找到这一点,您可以找到";重合指数";查找字符串,或者查找重复的代码块。如果你发现重复,它要么是未加密的,或者,如果重复是16字节(或另一个合适的块长度(的倍数,那么它可能是ECB编码的(即,在数据中重复相同的16字节密钥(。

我想说,你最好的办法是看看你的字符串有多随机,如果真的很难找到相关性,那么它可能加密得很好。如果相同的加密/编码文本不断出现,那么它可能只是被编码了。

最新更新