filters.cpp
来自「含有多种公开密钥算法、多种块加密、多种数据流加密、多种HASH函数、多种Chec」· C++ 代码 · 共 80 行
CPP
80 行
/************************************************** Filters Source File ** (C) 1999-2002 The Botan Project **************************************************/#include <botan/filters.h>#include <botan/lookup.h>namespace Botan {/************************************************** StreamCipher_Filter Constructor **************************************************/StreamCipher_Filter::StreamCipher_Filter(const std::string& sc_name, const SymmetricKey& key) { cipher = get_stream_cipher(sc_name); cipher->set_key(key); }/************************************************** Write data into a StreamCipher_Filter **************************************************/void StreamCipher_Filter::write(const byte input[], u32bit length) { while(length) { u32bit copied = std::min(length, buffer.size()); cipher->encrypt(input, buffer, copied); send(buffer, copied); input += copied; length -= copied; } }/************************************************** Hash_Filter Constructor **************************************************/Hash_Filter::Hash_Filter(const std::string& hash_name, u32bit len) : OUTPUT_LENGTH(len) { hash = get_hash(hash_name); }/************************************************** Complete a calculation by a Hash_Filter **************************************************/void Hash_Filter::end_msg() { SecureVector<byte> output = hash->final(); if(OUTPUT_LENGTH) send(output, std::min(OUTPUT_LENGTH, output.size())); else send(output, output.size()); }/************************************************** MAC_Filter Constructor **************************************************/MAC_Filter::MAC_Filter(const std::string& mac_name, const SymmetricKey& key, u32bit len) : OUTPUT_LENGTH(len) { mac = get_mac(mac_name); mac->set_key(key); }/************************************************** Complete a calculation by a MAC_Filter **************************************************/void MAC_Filter::end_msg() { SecureVector<byte> output = mac->final(); if(OUTPUT_LENGTH) send(output, std::min(OUTPUT_LENGTH, output.size())); else send(output, output.size()); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?