📄 symkey.cpp
字号:
/************************************************** SymmetricKey Source File ** (C) 1999-2002 The Botan Project **************************************************/#include <botan/symkey.h>#include <botan/hex.h>#include <botan/rng.h>namespace Botan {/************************************************** Create a SymmetricKey from a byte string **************************************************/void SymmetricKey::change(const byte in[], u32bit n) { key.create(n); key.copy(in, n); }/************************************************** Create a SymmetricKey from RNG output **************************************************/void SymmetricKey::change(u32bit length) { key.create(length); Global_RNG::randomize(key, length); }/************************************************** Create a SymmeticKey from a hex string **************************************************/void SymmetricKey::change(const std::string& hex_string) { SecureVector<byte> hex; for(u32bit j = 0; j != hex_string.length(); j++) if(Hex_Decoder::is_valid(hex_string[j])) hex.append(hex_string[j]); if(hex.size() % 2 != 0) throw Invalid_Argument("SymmeticKey: hex string must encode full bytes"); key.create(hex.size() / 2); for(u32bit j = 0; j != key.size(); j++) key[j] = Hex_Decoder::decode(hex.ptr() + 2*j); }/************************************************** XOR Operation for SymmetricKeys **************************************************/SymmetricKey& SymmetricKey::operator^=(const SymmetricKey& k) { if(&k == this) { key.clear(); return (*this); } xor_buf(key.ptr(), k, std::min(length(), k.length())); return (*this); }/************************************************** XOR Operation for SymmetricKeys **************************************************/SymmetricKey operator^(const SymmetricKey& k1, const SymmetricKey& k2) { SecureVector<byte> ret(std::max(k1.length(), k2.length())); ret.copy(k1, k1.length()); xor_buf(ret, k2, k2.length()); return SymmetricKey(ret); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -