跳转至

qmc

function Decoder [1/3]

解码器构造函数

explicit qqmusic::crypto::Decoder::Decoder () = default


function decrypt

密钥解密算法

virtual void qqmusic::crypto::Cipher::decrypt (
    qqmusic::utils::buffer & buf,
    size_t offset
) = 0

Parameters:

  • buf 待解密的密钥
  • offset 偏移量

MkDoxy Error: Incorrect namespace function configuration

Did not find Namespace with name: `qqmusic::crypto` and function: `read2buf`

Available classes and methods:
void decrypt(qqmusic::utils::buffer &buf, size_t offset)=0
 ~Cipher()=default
 Decoder()=default
 Decoder(Decoder &&)=default
 Decoder(const Decoder &)=delete
Result < qqmusic::utils::buffer > decrypt(std::string_view ekey, qqmusic::utils::buffer &&buf)
Decoder & operator=(Decoder &&)=default
Decoder & operator=(const Decoder &)=delete
qqmusic::utils::buffer decrypt_tencent_tea(qqmusic::utils::buffer &&in_buf, const std::vector< uint8_t > &key)
qqmusic::utils::buffer derive(qqmusic::utils::buffer &&raw_key)
qqmusic::utils::buffer derive_V1(qqmusic::utils::buffer &&raw_key_dec)
qqmusic::utils::buffer derive_V2(qqmusic::utils::buffer raw)
std::vector< uint8_t > makeSimpleKey(uint8_t salt, size_t len)
 MapCipher(const std::vector< uint8_t > &key)
void decrypt(qqmusic::utils::buffer &buf, size_t offset) override
 RC4Cipher(const std::vector< uint8_t > &key)
void decrypt(qqmusic::utils::buffer &buf, size_t offset) override
void decrypt(qqmusic::utils::buffer &buf, size_t offset, const std::vector< uint8_t > &key)
Snippet
::: doxy.dictionary.namespace.function
    namespace: qqmusic::crypto
    name: read2buf
调用示例:
SongInfo song = ...;
if (song.ekey.has_value()) {
     qqmusic::crypto::Decoder decoder(*song.ekey);
     if (read2buf(buf)) {
         if (decoder.decrypt()) {
             std::cout << "decrypt successful" << std::endl;
         }
     }
} else {
     // throw error
}
// then can use `buf_out`