使用 OpenSSL C++ 库和 PHP 的 Blowfish 加密数据不一致

我正在尝试开发一个 C++ 程序来加密一些数据,以便稍后使用基于 PHP 的 Web 服务进行解密。但是,我在使用 PHP 中的 openssl_decrypt() 方法使用 Blow-fish CBC 方法使用 PHP 解密数据时遇到问题。


我正在测试此代码 C++ 代码以加密消息并转换为 base64 格式以使用我的 PHP 程序解密。这是 C++ 程序的代码。


#include <secureinfra.hpp>

#include <iostream>


int main()

{

    cout << "Unit Test for the crypto system" << endl;

    SecureInfrastructure mySec;


    /* A 256 bit key and IV */

    auto *key = (unsigned char *)"ZdOAq0yn6H1i35TywbLrtqBO4NCjh7Vh";

    auto *iv = (unsigned char *)"01234567";


    /* Message to be encrypted */

    auto *plaintext = (unsigned char *)"The quick brown fox jumps over the lazy dog";


    /* Buffer for ciphertext. Ensure the buffer is long enough for the ciphertext which may be longer than the

     * plaintext, depending on the algorithm and mode. */

    unsigned char ciphertext[128];


    /* Buffer for the decrypted text */

    unsigned char decryptedtext[128];

    int decryptedtext_len, ciphertext_len;


    /* Encrypt the plaintext */

    ciphertext_len = mySec.EncryptMessage(plaintext, strlen((char *) plaintext), key, iv, ciphertext);


    /* Decrypt the ciphertext */

    decryptedtext_len = mySec.DecryptMessage(ciphertext, ciphertext_len, key, iv, decryptedtext);


    /* Add a NULL terminator. We are expecting printable text */

    decryptedtext[decryptedtext_len] = '\0';

    return 0;

}

但是,PHP 程序无法解密由我的 C++ 程序生成的 $ciphertext。当我尝试回显 $original_plaintext 时,它什么也没显示。


另外,我注意到使用 SSL 的 PHP 和 C++ 加密是不同的。例如,当我尝试使用 PHP(使用 openssl_encrypt 方法)和 C++ 加密短语“The quick brown fox jumps over the lazy dog”时,使用相同的密钥和 IV,加密的 base64 字符串如下:


在 C++ 中:

ljRvLcfBiDwxRSm1lDXMwDk5S4pRCg9D2F9jxR5C5yy79xoBHQNKjA/FaQ2dNfKvyH3brAV/


在 PHP 中:

hWj7F1fnBXhIWv4sonjhSmJgHWJALFecxxrGe0T1kLrN4TfSMUw/uELj6h5+Laph


我应该如何解决这个问题?我看到一篇类似的帖子描述了我需要在 C++ 程序上设置密钥大小,但我不确定如何正确执行此操作。


慕姐8265434
浏览 532回答 2
2回答

慕标5832272

当前的 C 实现假定具有固定密钥长度的密码,这不适用于Blowfish。对于具有可变密钥长度的密码,将其设置为某个值,例如 32 字节,EVP_EncryptInit_ex(ctx, EVP_bf_cbc(), NULL , key, iv);必须替换为EVP_EncryptInit_ex(ctx, EVP_bf_cbc(), NULL, NULL, NULL);EVP_CIPHER_CTX_set_key_length(ctx, 32);EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv);在EncryptMessage,例如这里。并且类似地也与解密。那么 C 代码和 PHP 代码的结果是相同的。

侃侃无极

我是一名 PHP 开发人员,所以不能对 C++ 方面的事情发表太多评论。但是,我已经使用 PHP 7.2.10 对此进行了测试,并且得到了相同的结果。如果你换成你$ciphertext给的值,hWj7F1fnBXhIWv4sonjhSmJgHWJALFecxxrGe0T1kLrN4TfSMUw/uELj6h5+Laph然后执行它确实会给你的脚本:“敏捷的棕色狐狸跳过了懒狗”因此,您的 PHP 脚本完全没有问题。问题在于,就 PHP 中的解密实现而言,您提供的哈希(由 C++ 程序生成)不正确。如果你var_dump($original_plaintext);在 PHP 脚本中这样做,它会返回 false,这证实了这一点。您的 C++ 程序在哪里告诉它使用 Blowfish CBC?我可以看到您在 PHP 脚本中使用 的位置执行此操作$cipher,但在 C++ 中没有。PHP 中没有一种密码方法可以为您提供该哈希值。作为测试,使用显示方法名称(来自openssl_get_cipher_methods())和哈希的此脚本:<?phperror_reporting(E_ALL);$methods = openssl_get_cipher_methods();foreach ($methods as $method) {&nbsp; &nbsp; echo $method . "\n";&nbsp; &nbsp; echo openssl_encrypt("The quick brown fox jumps over the lazy dog", $method, "ZdOAq0yn6H1i35TywbLrtqBO4NCjh7Vh", 0, "01234567");&nbsp; &nbsp; echo "\n\n----\n\n";}?>输出:AES-128-CBCCFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----AES-128-CBC-HMAC-SHA1CFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----AES-128-CBC-HMAC-SHA256CFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----AES-128-CFBKjdp5YLSCjWqYRPiWAi7vWJt3ui+NZnJXSL4dBdNEaIWyK2AeQIm2If0Mg==----AES-128-CFB1PsQSrHSFqXuZVZgtNXMSvwsdhhmxfw2MJgPmf/I++n1jmb0QZfRpSulHCg==----AES-128-CFB8KmQC+qe1l5iIeQk4MdBwkQlzvcmNCZH3EhxCCP1P7I2CrZAjE0G0NDQ24Q==----AES-128-CTRKjdp5YLSCjWqYRPiWAi7vVxK24U+JACgW6KCrbnVwTBQrBy/dUPI6RxNag==----AES-128-ECBTGwrUkmBrlam+I/4nL/KXXILZKdb5FKDpo+BSYMYe+z90MSzX75nkQXhRund4wCF----AES-128-OFBKjdp5YLSCjWqYRPiWAi7vV7oblWo5p+Us1m5FA0+R8nb7EE3cOXI6O7RCg==----AES-128-XTSOfhfg4ruiwKduK+6wC01olTA4XVY90bFBYfd+0QJgqs6O2OKrhhd3gRWMQ==----AES-192-CBC9PoANX4yywNkBNFCcX++qXST7xumUwIU0BIAwe4npwLNmeSC7MsYOsawg/+RztyV----AES-192-CFBwjxuTYax9f6jWWvKmidXvucLDzRNR/l5srv5KKVIPphruAhPnKQ23+Vspw==----AES-192-CFB16jB9HioMtoi3MZky0B8M01W1l2SqR6ZvtL3I8WEClcIdMXYFnjdP50o2Nw==----AES-192-CFB8wvw3vpDpqPTInjIuFEAhWwKlwrekcpc4Q7X7ApRKjHT1a+WDkME7Hz/u3A==----AES-192-CTRwjxuTYax9f6jWWvKmidXvibXdkK8UNq9ZX8bAsh6OcN1jD2UcFHuf0X5IA==----AES-192-ECBbAzuDIkfDbJNXkWNtovgH3UPoh+jRoq1kUxfomAHMPGxDbBWc4bDDrrEvWHkTqYM----AES-192-OFBwjxuTYax9f6jWWvKmidXvspHO1k5ImnLwNgWM+lB6brfjPT78myhmkK35w==----AES-256-CBCjLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----AES-256-CBC-HMAC-SHA1jLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----AES-256-CBC-HMAC-SHA256jLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----AES-256-CFB9cmTuo3iisXBbJzWFWCmgl/7mZ20LODkcqP+GNf7r9zzJy7pskvGE3h8+Q==----AES-256-CFB1y0D9Yj1ymwYVIrQx64nehgeoydPk9xB++McXmSz4lfZbNcBgL0fnlCxvNA==----AES-256-CFB89bXhDvqzPRmHQ7+8qpp7CxetEMKFzq8FsBJgdcVZPZ+Xno11RbD+l8wAwg==----AES-256-CTR9cmTuo3iisXBbJzWFWCmgqyMguKt3NJv/vh9Z+E/5o7jbmGIjLZKA7+QRg==----AES-256-ECBXe6luPVXEqvvTVEfNuO281ofcW+uV682D4fYYIyA7KHDcQkVHi647wSFaXqIxwZP----AES-256-OFB9cmTuo3iisXBbJzWFWCmgvMTTvnu1bC8K4cxVlI7G3wxZw6H/z/OU8fUSg==----AES-256-XTS7sP5mx9ES7JypAiqeC+ZXvu70gnNnOiPGMFRhwh14xNZiXRX2/FUTEYKLA==----BF-CBChWj7F1fnBXhIWv4sonjhSmJgHWJALFecxxrGe0T1kLrN4TfSMUw/uELj6h5+Laph----BF-CFBDtWBgA7jjoOOCHfIg+EvlWURlgrbYWM/001bn4xRbvo9r8sOoOdSAzoTsA==----BF-ECBGEPm0Nw/TGb9XI00QGbMOZhSltrgjLQLcS1rjyLB+Ti8DTfIoDmkvJGqAyoJd0LY----BF-OFBDtWBgA7jjoPFFmYP7IlPTkdCaP+8eY/rgB0M/12zCLTqPHerQV77Ar8L+g==----CAMELLIA-128-CBCiVUMSil3yWiIY9go7atWvrd/mSOtQPKmPnoxYg+B7pwevLuC0Y5RLchGEGn0cgZb----CAMELLIA-128-CFB6HYrCV2MPk3sn3oNWm0xLQarvqJ2dSgRDU/1N0tP0HnA4X+XYEvjd4d7ug==----CAMELLIA-128-CFB1rsMnrvOE/y0VIFH0/SVB5FJG6X6sK6ads+TiH9UM2X42U+hRbqIRT+cdgg==----CAMELLIA-128-CFB86NRTf6JBm71uVIZzK1DLr799SKaD3UxT5cPFne3xSFuWPb9Mnn2riFz6oA==----CAMELLIA-128-ECBespelBrXu4iWaxp2RZSLPyoSlck4G6ylQYHcu6zITMhmV9sMTEcUcKlZP71HYhQr----CAMELLIA-128-OFB6HYrCV2MPk3sn3oNWm0xLbgO3psDlQMt7zbaA/coaJvIVJqzAaSaY6BSgA==----CAMELLIA-192-CBCuz9Z+IX+P+CpQLBepmI3A9rU6Wcg1CsikKYglNU4SY3hlVOsT6PXD+hKXOobioPZ----CAMELLIA-192-CFBtrJ5LHzk0Y/T2TCcR6/daZ78aDxU1dJgRA6+VXU1uqFQovtUo0QRrgiCZg==----CAMELLIA-192-CFB17LLnnwpBpBkaFXrWw5qegx8KVvEgV2/VR362V5Z43qNJVPzzdvmcFjv9Vg==----CAMELLIA-192-CFB8tiogUjGFA+o7MOCoACibq7PfIaV4Pgj2Js4La4SqAn6262b7b4AAfvUDbQ==----CAMELLIA-192-ECBsn9QfT8PQrMrNxAR9pBT3QVNLdOyhYLKBb1joqmoOW7wzJZ7zW7P070ErkJPkMYU----CAMELLIA-192-OFBtrJ5LHzk0Y/T2TCcR6/dafYXU4/u9aln1U/6GzytlRC8Onnw54/t5/slvA==----CAMELLIA-256-CBCKlj37OGl6nexwkw5ZgKSUgTQvAubQYKQeMjX2jMA0LDhaAxr38y91bU3dCwV6xYt----CAMELLIA-256-CFBxlQLgvFHyLYmrl3plKqarQUU8dYdC0Qt0dKg6Z38KQGl0yoh5jIPtzIluA==----CAMELLIA-256-CFB1gxGv92PY0eNcmtYGvdeGKveygkiBiejcckETUkVAVbYXiZO6xvFYnETR0Q==----CAMELLIA-256-CFB8xjARmxeN+O730AwGfWzJaHReUxu28PAzniDHh99SFKnwAww9Iy5wtbpsCg==----CAMELLIA-256-ECBM/P3GH8xSUn4bPPmD7rKupqYS6VG8nSsW65PmvuzZ7L4PJtaOGLMpqx72Wo2F2F1----CAMELLIA-256-OFBxlQLgvFHyLYmrl3plKqardbHfL3lWaw0Ki9U5svO8pXQgTzUJ0jibbOI/g==----CAST5-CBC/XDmMTtfxYk5R+zx0Qg9B0ohoAT0kr/lRJB0OIiM7PlQqMDhM/bH2iF59qYPWn8F----CAST5-CFBqjxQUjVCFHtoSyLDOL6BYUGggJ95TJn0zPD/jevMKetvCjfCOOvWHvmBOw==----CAST5-ECBJZiSJA0Sgs6A+x5U0pffRC/cMgWmHEMptZ4JrLQ5rCvNhLj65aQryWDJDRtesuk3----CAST5-OFBqjxQUjVCFHs3AVHEDgPNF7R40LDHvYDeXna+4QIFWETaoBOplIIcW5BN5g==----DES-CBCVTSvIBHq5AqT3GZ7J3qEt1CGwYCCk7gUpyBTLhgC4kqXdzaOs2TuekAIhmRyZZ9Y----DES-CFBZ6znWp6g7hyOaZpvk9+24Vls+6JaUA+sgIR9h0bWAlqby7oR/fX4k2wy1A==----DES-CFB1fpU6lGqFl6kkQtXuv6XM112vT2CIVEV9iTnSkXd+Zrk7T065215LqO+nzA==----DES-CFB8Z2cEx6sPTs5lDZRq8Ejp2zhR8JbdcoqdKMTHDHA/Q5QA8/B036OKVr3QkQ==----DES-ECBVegFycZ1wAWwrzv0AhpJQ6mFzWr+SK6ecIyqN8iBXfFtXa3eE/4+iSKCEBXCdEfj----DES-EDEbb85G6G8tchhxlIYF8vLpcChFtSC7Iuyywn4tssj7LP/8PHdTWZWKOJDN8NsY3Kw----DES-EDE-CBC0nWlfDQeBtrWN2xZ1JqPl+fTeTfdrp2/bBWFTtpMcsV1Btz8UaN/YPHJ45/qJlrI----DES-EDE-CFBsQ4TEmNrEW2T6C0wYabfGaYpwg69dOE9EZXzA7qt0JGctgiSzXwq3HT11w==----DES-EDE-OFBsQ4TEmNrEW2mZc8ckaETVTWG+AFgiyykc68CWoiwNxuRYyVDCnrYvGS/WQ==----DES-EDE3dzCgZyS9ovD+632p+bJy476BXmaNAKj8qA9xAClHrIgDyaQ0aOhLgFQU9dk7XItN----DES-EDE3-CBCfAngoyT1z6mLk/y1068+0Zr2293p+4K7/JoQu5KRu3WgQJTRVim36ozjqNNIgfbX----DES-EDE3-CFBMTLC8HyTQSkN/kYpDKSnsmFTU2IoW7rQIPMiOKIOiuZiFiYtEULxMyB6iw==----DES-EDE3-CFB1TIfIZ6hK04UUu4IpMeKO/oLDVk3bEVCk2aKlqr7+E2f67NIHsjngE2L7vQ==----DES-EDE3-CFB8MbhxUUq79mYdxFOVcnbM6KqxUOtaeh7tcZSlPsLOOqZrLpTnrlp7HQr92w==----DES-EDE3-OFBMTLC8HyTQSlb6rJ3ranhIqHDnnjplmPB4Ag4asjmyCd8hmMCsWWCpBbXnQ==----DES-OFBZ6znWp6g7hw9YCEYjN1RHjBi6ijkmuQgrI/Q+jywb+cqqm0Zf0p4iunYcg==----DESX-CBCBNP57o24ysgLFrV6f1XHdEdGj3UcGKjepGDs3598A0BiJPpWKhmd4jvYEtIivZXG----IDEA-CBC42f/2g3A7kdWcOe0+OPxcmQPw5Lmazis0nUAJeIzEVVKSkEsW7cDH5fU9z63XY3o----IDEA-CFBZWg7X3EGMf+FHesNqcZWANkaoW5mPIx4xvTlRqOhcLcDZ9PTF60BqpTTyQ==----IDEA-ECBi+ncikDw1gXTz2wk7iYvlPJaTQfNshfcUcXDhHF7ud4tA3WE4VhBy43MD7u5BIbm----IDEA-OFBZWg7X3EGMf/fuZ41IQJ+pXIBIu1t5NK81CHarFwPNMFQRFZDAKZi6Vnqyw==----RC2-40-CBCVwYhijuReEDe5vAg51O595EBrjsxWJCvP8iTqp/jqYXVwu/+CmRcNVBo4VX8KpqG----RC2-64-CBCdfo5jOCLZwpSzZE8J1tDKFpwT/6hq6FFjIeeJAufBDanaAFwoDgw5lIaEfHnMbgK----RC2-CBC6kBBW+RF/CbfGWb3/FBmWXz6tSyShVRI3rMoe+YrdkD/CVH/nav9Iz1z46ea/pVa----RC2-CFBg6fHk/fDwnmyHgkxDhcS8uw1MeVYMoTCHc2CxvO07JIiSIa6NuMtJSSuzg==----RC2-ECBRxgWGpaR8wN0KJwTsc6QfEuiqugj9Y0ijqOf2UBuIV1iItfLFqvz8vAyQFkk0gVo----RC2-OFBg6fHk/fDwnnKQZxb5Kj/TvEWj1UNtZYBQGJwVgl/RsNcFR3iilMcW3GKtQ==----RC4zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----RC4-40zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----RC4-HMAC-MD5zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----SEED-CBCMpmWEqpktFNCFlSsRK67o/g8DmUOOCGhiDPSn/zNiRW9Og92hk2BpSpll1TthmY0----SEED-CFBkpvPjDQ4fDAWRde/njkfbmfCdvirZXihMyrpPmpVObIhXai8MEpB3WQdnA==----SEED-ECBPq5Bdxh1ntX6tW6Vn3QmALx87r6XMGh2O0+lUfbuFYRXblENBn6JIcNp92dutdwk----SEED-OFBkpvPjDQ4fDAWRde/njkfbn8vdtv60gIh96cuJA0LhTuN+UXoZ/9gIw9hNA==----aes-128-cbcCFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----aes-128-cbc-hmac-sha1CFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----aes-128-cbc-hmac-sha256CFqD8KvYNNSLRRH5leJm9jLq4japdiZODU959rRx4E1IyGcpCfG9VezF0IdsWPDy----aes-128-ccm----aes-128-cfbKjdp5YLSCjWqYRPiWAi7vWJt3ui+NZnJXSL4dBdNEaIWyK2AeQIm2If0Mg==----aes-128-cfb1PsQSrHSFqXuZVZgtNXMSvwsdhhmxfw2MJgPmf/I++n1jmb0QZfRpSulHCg==----aes-128-cfb8KmQC+qe1l5iIeQk4MdBwkQlzvcmNCZH3EhxCCP1P7I2CrZAjE0G0NDQ24Q==----aes-128-ctrKjdp5YLSCjWqYRPiWAi7vVxK24U+JACgW6KCrbnVwTBQrBy/dUPI6RxNag==----aes-128-ecbTGwrUkmBrlam+I/4nL/KXXILZKdb5FKDpo+BSYMYe+z90MSzX75nkQXhRund4wCF----aes-128-gcm----aes-128-ofbKjdp5YLSCjWqYRPiWAi7vV7oblWo5p+Us1m5FA0+R8nb7EE3cOXI6O7RCg==----aes-128-xtsOfhfg4ruiwKduK+6wC01olTA4XVY90bFBYfd+0QJgqs6O2OKrhhd3gRWMQ==----aes-192-cbc9PoANX4yywNkBNFCcX++qXST7xumUwIU0BIAwe4npwLNmeSC7MsYOsawg/+RztyV----aes-192-ccm----aes-192-cfbwjxuTYax9f6jWWvKmidXvucLDzRNR/l5srv5KKVIPphruAhPnKQ23+Vspw==----aes-192-cfb16jB9HioMtoi3MZky0B8M01W1l2SqR6ZvtL3I8WEClcIdMXYFnjdP50o2Nw==----aes-192-cfb8wvw3vpDpqPTInjIuFEAhWwKlwrekcpc4Q7X7ApRKjHT1a+WDkME7Hz/u3A==----aes-192-ctrwjxuTYax9f6jWWvKmidXvibXdkK8UNq9ZX8bAsh6OcN1jD2UcFHuf0X5IA==----aes-192-ecbbAzuDIkfDbJNXkWNtovgH3UPoh+jRoq1kUxfomAHMPGxDbBWc4bDDrrEvWHkTqYM----aes-192-gcm----aes-192-ofbwjxuTYax9f6jWWvKmidXvspHO1k5ImnLwNgWM+lB6brfjPT78myhmkK35w==----aes-256-cbcjLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----aes-256-cbc-hmac-sha1jLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----aes-256-cbc-hmac-sha256jLxnUq0bKY2//CwBFeZoqy3u7s8E7aQ0PEm/5vPHR4/a2TVylXu5n2o2x7pu8SRq----aes-256-ccm----aes-256-cfb9cmTuo3iisXBbJzWFWCmgl/7mZ20LODkcqP+GNf7r9zzJy7pskvGE3h8+Q==----aes-256-cfb1y0D9Yj1ymwYVIrQx64nehgeoydPk9xB++McXmSz4lfZbNcBgL0fnlCxvNA==----aes-256-cfb89bXhDvqzPRmHQ7+8qpp7CxetEMKFzq8FsBJgdcVZPZ+Xno11RbD+l8wAwg==----aes-256-ctr9cmTuo3iisXBbJzWFWCmgqyMguKt3NJv/vh9Z+E/5o7jbmGIjLZKA7+QRg==----aes-256-ecbXe6luPVXEqvvTVEfNuO281ofcW+uV682D4fYYIyA7KHDcQkVHi647wSFaXqIxwZP----aes-256-gcm----aes-256-ofb9cmTuo3iisXBbJzWFWCmgvMTTvnu1bC8K4cxVlI7G3wxZw6H/z/OU8fUSg==----aes-256-xts7sP5mx9ES7JypAiqeC+ZXvu70gnNnOiPGMFRhwh14xNZiXRX2/FUTEYKLA==----bf-cbchWj7F1fnBXhIWv4sonjhSmJgHWJALFecxxrGe0T1kLrN4TfSMUw/uELj6h5+Laph----bf-cfbDtWBgA7jjoOOCHfIg+EvlWURlgrbYWM/001bn4xRbvo9r8sOoOdSAzoTsA==----bf-ecbGEPm0Nw/TGb9XI00QGbMOZhSltrgjLQLcS1rjyLB+Ti8DTfIoDmkvJGqAyoJd0LY----bf-ofbDtWBgA7jjoPFFmYP7IlPTkdCaP+8eY/rgB0M/12zCLTqPHerQV77Ar8L+g==----camellia-128-cbciVUMSil3yWiIY9go7atWvrd/mSOtQPKmPnoxYg+B7pwevLuC0Y5RLchGEGn0cgZb----camellia-128-cfb6HYrCV2MPk3sn3oNWm0xLQarvqJ2dSgRDU/1N0tP0HnA4X+XYEvjd4d7ug==----camellia-128-cfb1rsMnrvOE/y0VIFH0/SVB5FJG6X6sK6ads+TiH9UM2X42U+hRbqIRT+cdgg==----camellia-128-cfb86NRTf6JBm71uVIZzK1DLr799SKaD3UxT5cPFne3xSFuWPb9Mnn2riFz6oA==----camellia-128-ecbespelBrXu4iWaxp2RZSLPyoSlck4G6ylQYHcu6zITMhmV9sMTEcUcKlZP71HYhQr----camellia-128-ofb6HYrCV2MPk3sn3oNWm0xLbgO3psDlQMt7zbaA/coaJvIVJqzAaSaY6BSgA==----camellia-192-cbcuz9Z+IX+P+CpQLBepmI3A9rU6Wcg1CsikKYglNU4SY3hlVOsT6PXD+hKXOobioPZ----camellia-192-cfbtrJ5LHzk0Y/T2TCcR6/daZ78aDxU1dJgRA6+VXU1uqFQovtUo0QRrgiCZg==----camellia-192-cfb17LLnnwpBpBkaFXrWw5qegx8KVvEgV2/VR362V5Z43qNJVPzzdvmcFjv9Vg==----camellia-192-cfb8tiogUjGFA+o7MOCoACibq7PfIaV4Pgj2Js4La4SqAn6262b7b4AAfvUDbQ==----camellia-192-ecbsn9QfT8PQrMrNxAR9pBT3QVNLdOyhYLKBb1joqmoOW7wzJZ7zW7P070ErkJPkMYU----camellia-192-ofbtrJ5LHzk0Y/T2TCcR6/dafYXU4/u9aln1U/6GzytlRC8Onnw54/t5/slvA==----camellia-256-cbcKlj37OGl6nexwkw5ZgKSUgTQvAubQYKQeMjX2jMA0LDhaAxr38y91bU3dCwV6xYt----camellia-256-cfbxlQLgvFHyLYmrl3plKqarQUU8dYdC0Qt0dKg6Z38KQGl0yoh5jIPtzIluA==----camellia-256-cfb1gxGv92PY0eNcmtYGvdeGKveygkiBiejcckETUkVAVbYXiZO6xvFYnETR0Q==----camellia-256-cfb8xjARmxeN+O730AwGfWzJaHReUxu28PAzniDHh99SFKnwAww9Iy5wtbpsCg==----camellia-256-ecbM/P3GH8xSUn4bPPmD7rKupqYS6VG8nSsW65PmvuzZ7L4PJtaOGLMpqx72Wo2F2F1----camellia-256-ofbxlQLgvFHyLYmrl3plKqardbHfL3lWaw0Ki9U5svO8pXQgTzUJ0jibbOI/g==----cast5-cbc/XDmMTtfxYk5R+zx0Qg9B0ohoAT0kr/lRJB0OIiM7PlQqMDhM/bH2iF59qYPWn8F----cast5-cfbqjxQUjVCFHtoSyLDOL6BYUGggJ95TJn0zPD/jevMKetvCjfCOOvWHvmBOw==----cast5-ecbJZiSJA0Sgs6A+x5U0pffRC/cMgWmHEMptZ4JrLQ5rCvNhLj65aQryWDJDRtesuk3----cast5-ofbqjxQUjVCFHs3AVHEDgPNF7R40LDHvYDeXna+4QIFWETaoBOplIIcW5BN5g==----des-cbcVTSvIBHq5AqT3GZ7J3qEt1CGwYCCk7gUpyBTLhgC4kqXdzaOs2TuekAIhmRyZZ9Y----des-cfbZ6znWp6g7hyOaZpvk9+24Vls+6JaUA+sgIR9h0bWAlqby7oR/fX4k2wy1A==----des-cfb1fpU6lGqFl6kkQtXuv6XM112vT2CIVEV9iTnSkXd+Zrk7T065215LqO+nzA==----des-cfb8Z2cEx6sPTs5lDZRq8Ejp2zhR8JbdcoqdKMTHDHA/Q5QA8/B036OKVr3QkQ==----des-ecbVegFycZ1wAWwrzv0AhpJQ6mFzWr+SK6ecIyqN8iBXfFtXa3eE/4+iSKCEBXCdEfj----des-edebb85G6G8tchhxlIYF8vLpcChFtSC7Iuyywn4tssj7LP/8PHdTWZWKOJDN8NsY3Kw----des-ede-cbc0nWlfDQeBtrWN2xZ1JqPl+fTeTfdrp2/bBWFTtpMcsV1Btz8UaN/YPHJ45/qJlrI----des-ede-cfbsQ4TEmNrEW2T6C0wYabfGaYpwg69dOE9EZXzA7qt0JGctgiSzXwq3HT11w==----des-ede-ofbsQ4TEmNrEW2mZc8ckaETVTWG+AFgiyykc68CWoiwNxuRYyVDCnrYvGS/WQ==----des-ede3dzCgZyS9ovD+632p+bJy476BXmaNAKj8qA9xAClHrIgDyaQ0aOhLgFQU9dk7XItN----des-ede3-cbcfAngoyT1z6mLk/y1068+0Zr2293p+4K7/JoQu5KRu3WgQJTRVim36ozjqNNIgfbX----des-ede3-cfbMTLC8HyTQSkN/kYpDKSnsmFTU2IoW7rQIPMiOKIOiuZiFiYtEULxMyB6iw==----des-ede3-cfb1TIfIZ6hK04UUu4IpMeKO/oLDVk3bEVCk2aKlqr7+E2f67NIHsjngE2L7vQ==----des-ede3-cfb8MbhxUUq79mYdxFOVcnbM6KqxUOtaeh7tcZSlPsLOOqZrLpTnrlp7HQr92w==----des-ede3-ofbMTLC8HyTQSlb6rJ3ranhIqHDnnjplmPB4Ag4asjmyCd8hmMCsWWCpBbXnQ==----des-ofbZ6znWp6g7hw9YCEYjN1RHjBi6ijkmuQgrI/Q+jywb+cqqm0Zf0p4iunYcg==----desx-cbcBNP57o24ysgLFrV6f1XHdEdGj3UcGKjepGDs3598A0BiJPpWKhmd4jvYEtIivZXG----id-aes128-CCM----id-aes128-GCM----id-aes128-wrap----id-aes192-CCM----id-aes192-GCM----id-aes192-wrap----id-aes256-CCM----id-aes256-GCM----id-aes256-wrap----id-smime-alg-CMS3DESwrap----idea-cbc42f/2g3A7kdWcOe0+OPxcmQPw5Lmazis0nUAJeIzEVVKSkEsW7cDH5fU9z63XY3o----idea-cfbZWg7X3EGMf+FHesNqcZWANkaoW5mPIx4xvTlRqOhcLcDZ9PTF60BqpTTyQ==----idea-ecbi+ncikDw1gXTz2wk7iYvlPJaTQfNshfcUcXDhHF7ud4tA3WE4VhBy43MD7u5BIbm----idea-ofbZWg7X3EGMf/fuZ41IQJ+pXIBIu1t5NK81CHarFwPNMFQRFZDAKZi6Vnqyw==----rc2-40-cbcVwYhijuReEDe5vAg51O595EBrjsxWJCvP8iTqp/jqYXVwu/+CmRcNVBo4VX8KpqG----rc2-64-cbcdfo5jOCLZwpSzZE8J1tDKFpwT/6hq6FFjIeeJAufBDanaAFwoDgw5lIaEfHnMbgK----rc2-cbc6kBBW+RF/CbfGWb3/FBmWXz6tSyShVRI3rMoe+YrdkD/CVH/nav9Iz1z46ea/pVa----rc2-cfbg6fHk/fDwnmyHgkxDhcS8uw1MeVYMoTCHc2CxvO07JIiSIa6NuMtJSSuzg==----rc2-ecbRxgWGpaR8wN0KJwTsc6QfEuiqugj9Y0ijqOf2UBuIV1iItfLFqvz8vAyQFkk0gVo----rc2-ofbg6fHk/fDwnnKQZxb5Kj/TvEWj1UNtZYBQGJwVgl/RsNcFR3iilMcW3GKtQ==----rc4zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----rc4-40zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----rc4-hmac-md5zAi3M6pkRBrBrYRy2p+bZ/xOt7dRyfZ/Bp7s0iHfIbPgS2mJij0ll/3V7g==----seed-cbcMpmWEqpktFNCFlSsRK67o/g8DmUOOCGhiDPSn/zNiRW9Og92hk2BpSpll1TthmY0----seed-cfbkpvPjDQ4fDAWRde/njkfbmfCdvirZXihMyrpPmpVObIhXai8MEpB3WQdnA==----seed-ecbPq5Bdxh1ntX6tW6Vn3QmALx87r6XMGh2O0+lUfbuFYRXblENBn6JIcNp92dutdwk----seed-ofbkpvPjDQ4fDAWRde/njkfbn8vdtv60gIh96cuJA0LhTuN+UXoZ/9gIw9hNA==----编辑-它看起来对我来说,你的C ++程序中的散列其他的东西比"The quick brown fox..."。我能想到的最好的调试方法——就像在 PHP 中的情况一样——是ciphertext在 C++ 脚本中尽可能多的地方输出变量。
打开App,查看更多内容
随时随地看视频慕课网APP