li1055107552 / xiaoe-tech-decodeDemo

小鹅通视频下载并解码demo
21 stars 2 forks source link

加密文件下载成功,但是解密过程发生异常:code: 'ERR_CRYPTO_INVALID_KEYLEN' #2

Open YuuiChung opened 8 months ago

li1055107552 commented 8 months ago
ERR_CRYPTO_INVALID_KEYLEN 是一个 Node.js 中的错误,它通常发生在使用加密模块时,提供的密钥长度不符合特定加密算法的要求。在 Node.js 的加密模块中,不同的算法需要不同长度的密钥,如果提供的密钥长度不正确,就会抛出这个错误。

例如,如果你使用 AES 加密,并尝试使用一个不是 16、24 或 32 字节长度的密钥,你会遇到这个错误,因为 AES-128 需要 16 字节的密钥,AES-192 需要 24 字节的密钥,而 AES-256 需要 32 字节的密钥。

要解决这个问题,确保你为加密算法提供了正确长度的密钥。如果你不确定密钥的正确长度,可以参考相应加密算法的文档。如果你从用户输入或其他不可靠的来源获取密钥,可能需要在使用之前对其进行处理,以确保其符合所需长度。

以上是ChatGPT的回答。省流就是 你没下载对解密的密钥,他的密钥应该是一个16位的 你可以试下打印 getkey() 后返回的结果 看下是什么,或者 key.length 看是不是16

li1055107552 commented 8 months ago

甚至还有一种可能就是,他的加密就不是AES,然后你看 m3u8 里面是什么 再改对应的就行

YuuiChung commented 8 months ago

检查了一下,长度和加密算法是没问题的,不知道是否是域名不一样,因为看到demo的域名跟我复制的域名不一致的,楼主可以下载成功吗

beclass commented 2 months ago

image

const decipher = crypto.createDecipheriv('aes-128-cbc', secret_key, IV); Error: error:1C800064:Provider routines::bad decrypt

请教下怎么改呢?

li1055107552 commented 2 months ago

图像

const decipher = crypto.createDecipheriv('aes-128-cbc', secret_key, IV); 错误:错误:1C800064:提供程序例程::bad decrypt

请教下怎么改呢?

这个不需要改吧, 解密失败的话,你这个密钥可能没有二次加密的,直接解了合并即可

如果需要改的话,以下是一些可选值

    type CipherCCMTypes = "aes-128-ccm" | "aes-192-ccm" | "aes-256-ccm" | "chacha20-poly1305";
    type CipherGCMTypes = "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm";
    type CipherOCBTypes = "aes-128-ocb" | "aes-192-ocb" | "aes-256-ocb";