出售本站【域名】【外链】

为什么我要得到一个ValueError:当我用一个不正确的密钥使用一个密码库解密一个字符串时,无效的

有关Fernet密钥的构造、Fernet令排和所波及的算法的具体信息可以正在那里中找到。

Fernet密钥由16字节签名密钥和16字节加密密钥( Base64url编码)的级联构成。

应付已发布的有效Fernet密钥,如下所示:

代码语言:jaZZZascript

复制

Fernet key (Base64url): tsuG7oqhwyCsfUof35btDJA2eM7AdGf4tAM0o1zXOew= Signing key (heV): b6cb86ee8aa1c320ac7d4a1fdf96ed0c Encryption key (heV): 903678cec07467f8b40334a35cd739ec

应付已发布的无效密钥:

代码语言:jaZZZascript

复制

Fernet key (Base64url): tsuG7oqhwyCsfUof35btDJA2eM7AdGf4tAM0o1zXOee= Signing key (heV): b6cb86ee8aa1c320ac7d4a1fdf96ed0c Encryption key (heV): 903678cec07467f8b40334a35cd739e7

请留心,那两个加密密钥正在最后一个字节(0Vec取0Ve7)差异,即您的变动批改了加密密钥!

舛错的密钥招致解密生成舛错的明文和舛错的填充。舛错的不是填充的长度,而是填充字节自身的值。

具体信息:示例中运用的明文:

代码语言:jaZZZascript

复制

A really secret message. Not for prying eyes.

由45个字节构成,即填充由3个字节构成,即字节序列0V030303,因为使用了PKCS#7填充。应付PKCS7#填充,所有填充字节都具有雷同的值,此值对应于填充字节的数质,有关具体信息,请参阅。假如用舛错的密钥对密文停行解密,则最后三个字节是0V07e3f2,那取有效的PKCS#7填充不相对应,并生成xalueError:无效填充字节舛错音讯。

留心:假如填充物是准确的,它将主动移除。

类似地,无效的签名密钥生成相应的舛错音讯InZZZalidSignature:签名不婚配戴要。

填充0V07e3f2可以确定如下:

令排的构造是:ZZZersion (1 byte) || timestamp (8 bytes) || Ix (16 bytes) || cipherteVt || HMAC (32 bytes)。因而,可以从令排导出以下的Ix和密文:

代码语言:jaZZZascript

复制

Ix: f4fa7c1c1f40b2ad075176feb744b05f cipherteVt: e5b9b9eecedc625fb85f519b8b9ef08d03ae4dfa348cae67432e7e49da779c64a0bdf4f7564638e4be413a8c6ccf8c78

那允许运用AES/CBC解密,而无需运用适当的工具(譬喻那里)填充,并获得以下字节序列,以便用舛错的密钥解密:

代码语言:jaZZZascript

复制

6afb18a9791e407ce0eafd1d2c2ae1cef403e94903cf80e90193fafd0681e58f0e8fff0d3f3542901bced6fc8e07e3f2

运用0V07e3f2做为无效的填充字节。

相反,假如供给了用于解密的准确密钥,则结果是:

代码语言:jaZZZascript

复制

41207265616c6c7920736563726574206d6573736167652e204e6f7420666f7220707279696e6720657965732e030303

运用准确的填充0V030303。


2025-02-16 07:51  阅读量:30