123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #pragma once
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <algorithm>
- static const std::string base64_chars =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "0123456789+/";
- class sm4
- {
- public:
- static inline bool is_base64(unsigned char c)
- {
- return (isalnum(c) || (c == '+') || (c == '/'));
- }
- static std::string base64_encode(const std::string& text);
- static std::string base64_decode(const std::string& encoded_string);
- static std::string HexToStr(std::string str);
- static std::string StrToHex(std::string str);
- static std::string PKCS7(std::string str);
- static std::string BinToHex(std::string str);
- static std::string HexToBin(std::string str);
- static int HexToDec(char str);
- static std::string LeftShift(std::string str, int len);
- static std::string XOR(std::string str1, std::string str2);
- static std::string NLTransform(std::string str);
- static std::string LTransform(std::string str);
- static std::string L2Transform(std::string str);
- static std::string T(std::string str);
- static std::string T2(std::string str);
- static std::string KeyExtension(std::string MK);
- static std::string sm4_encode(std::string& hex32, std::string& key);
- static std::string sm4_decode(std::string& hex32, std::string& key);
- static std::string sm4encodestrhex(std::string text, std::string key);
- static std::string sm4decodehexstr(std::string cipher, std::string key);
- static std::string sm4encodestrbase64(std::string text, std::string key);
- static std::string sm4decodestrbase64(std::string base64_text, std::string key);
- };
|