2017-11-16 7 views
-3

私は:Base32クラスに別のアルファベットを使用するにはどうすればよいですか? pythonで

encoded = base64.b32encode("1ACC64E9510C32CE8E34".decode('hex')) 

私はDLGGJ2KRBQZM5DRUを取得します。 Crypto ++について:

std::string decoded2; 
std::string first_20="1ACC64E9510C32CE8E34"; 

StringSource ssv(first_20, true /*pumpAll*/, 
    new HexDecoder(
     new StringSink(decoded2) 
    ) // HexDecoder 
); // StringSource 
boost::algorithm::to_lower(decoded2); 

StringSource ss(decoded2, true, 

    new Base32Encoder(
     new StringSink(hash_sink) 
    ) // Base64Decoder 
); // StringSource 

std::cout<<"encoded raw:"<<hash_sink<<std::endl; 

私はDMGGJ4MTBS3N7DTWが間違っています。

上記の文字列をC++でエンコードして、Pythonと同じ結果を得る方法はありますか?

+0

ヘッダーファイルを使用して常にコードを投稿してください。 (私はdownvoteをしなかった)。 – Arash

+0

ヘッダファイルは 'の#include の#include の#include の#include の#include の#include する#include <ブースト/ program_options.hpp> の#include する#include <ブースト あります/include using namespace std; /algorithm/string/case_conv.hpp> #include ' –

+0

の#include の#include の#include の#include の#includeは、どのようにこの質問は、任意の研究努力が表示されませんか? 私はcryptoppの問題追跡ツールについて尋ねましたが、それらの関数は同じではないと言っています[github](https://github.com/weidai11/cryptopp/issues/534) –

答えて

0

私は私が私をdownvoted男はまた、これを見ることができることを望む完璧なソリューションのgithubの

static const CryptoPP::byte ALPHABET[]   = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; // Most libraries use RFC4648. 

const std::string decode(const std::string& encoded) 
{ 
    std::string decoded; 

    static int decoding_array[256]; 
    CryptoPP::Base32Decoder::InitializeDecodingLookupArray(decoding_array, 
           ALPHABET, 
           32, 
           true); // false = case insensitive 

    CryptoPP::Base32Decoder b32decoder; 
    CryptoPP::AlgorithmParameters dp = CryptoPP::MakeParameters(
             CryptoPP::Name::DecodingLookupArray(), 
             (const int *)decoding_array, 
             false); 
    b32decoder.IsolatedInitialize(dp); 

    b32decoder.Attach(new CryptoPP::StringSink(decoded)); 
    b32decoder.Put((std::uint8_t*)encoded.c_str(), encoded.size()); 
    b32decoder.MessageEnd(); 

    return decoded; 
} 

を見つけました。 私はCrypto ++と暗号化の全体として非常に新しいです。

+0

これは、デフォルトのものと同じアルファベットのようです: '' ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 "'。たぶん、「間違っている」というよりも、あなたが望むものを正確に述べるべきでしょう。 ['base32.cpp'](https://github.com/weidai11/cryptopp/blob/master/base32.cpp)ソースファイルも参照してください。 – jww

+0

デフォルトモードでは、別の結果が得られます。そして、私はそれが最初にアルファベットの問題であることを知らなかった。私がcryptopp repoに関する問題を開くまで、私はまた、この特定のアルファベットをデフォルトとしてどのような利点があるのか​​を聞かれました。私は彼がそれをそうでないデフォルトにするかどうかを決めたかったと思う。 –

+0

改訂版もこの投稿を削除できる場合は、私は喜んでそれを感謝します。私は下位票がなぜ妥当ではないのか分かりませんが、それは新しいユーザーが決して手に入らない複雑なものに関連する質問です。 –

関連する問題