中间件底层,websocket

crypto.cpp 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // crypto.cpp : 定义静态库的函数。
  2. //
  3. #include "pch.h"
  4. #include "framework.h"
  5. #include "Crypto.h"
  6. #include <iostream>
  7. #include <sstream>
  8. #include <cryptopp/aes.h>
  9. #include <cryptopp/filters.h>
  10. #include <cryptopp/modes.h>
  11. #include <cryptopp/BASE64.h>
  12. #include <cryptopp/hex.h>
  13. #pragma comment(lib,"cryptlib.lib")
  14. // TODO: 这是一个库函数示例
  15. void fncrypto()
  16. {
  17. }
  18. std::string Crypto::aes_encrypt_ecb_base64(std::string data, unsigned char * key, int keylen)
  19. {
  20. std::string encrypt_str;
  21. try
  22. {
  23. CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption ecb_encription(key, keylen);
  24. CryptoPP::StreamTransformationFilter stf_encription(
  25. ecb_encription,
  26. new CryptoPP::Base64Encoder(new CryptoPP::StringSink(encrypt_str)),
  27. CryptoPP::BlockPaddingSchemeDef::DEFAULT_PADDING
  28. );
  29. stf_encription.Put(reinterpret_cast<const unsigned char*>(data.c_str()), data.length());
  30. stf_encription.MessageEnd();
  31. }
  32. catch (std::exception e) {
  33. std::cout << e.what() << std::endl;
  34. }
  35. return encrypt_str;
  36. }
  37. std::string Crypto::aes_encrypt_ecb_hex(std::string data, unsigned char * key, int keylen)
  38. {
  39. std::string encrypt_str;
  40. try
  41. {
  42. CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption ecb_encription(key, keylen);
  43. CryptoPP::StreamTransformationFilter stf_encription(
  44. ecb_encription,
  45. new CryptoPP::HexEncoder(new CryptoPP::StringSink(encrypt_str)),
  46. CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING
  47. );
  48. stf_encription.Put(reinterpret_cast<const unsigned char*>(data.c_str()), data.length() + 1);
  49. stf_encription.MessageEnd();
  50. }
  51. catch (std::exception e) {
  52. std::cout << e.what() << std::endl;
  53. }
  54. return encrypt_str;
  55. }
  56. std::string Crypto::aes_decrypt_ecb_hex(std::string hex_data, unsigned char * key, int keylen)
  57. {
  58. try
  59. {
  60. std::string aes_encrypt_data;
  61. CryptoPP::HexDecoder decoder;
  62. decoder.Attach(new CryptoPP::StringSink(aes_encrypt_data));
  63. decoder.Put(reinterpret_cast<const unsigned char*>(hex_data.c_str()), hex_data.length());
  64. decoder.MessageEnd();
  65. std::string decrypt_data;
  66. CryptoPP::ECB_Mode<CryptoPP::AES>::Decryption ebc_description(key, keylen);
  67. CryptoPP::StreamTransformationFilter stf_description(
  68. ebc_description,
  69. new CryptoPP::StringSink(decrypt_data),
  70. CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING
  71. );
  72. stf_description.Put(
  73. reinterpret_cast<const unsigned char*>(aes_encrypt_data.c_str()),
  74. aes_encrypt_data.length()
  75. );
  76. stf_description.MessageEnd();
  77. return decrypt_data;
  78. }
  79. catch (std::exception e) {
  80. std::cout << e.what() << std::endl;
  81. return "";
  82. }
  83. }
  84. std::string Crypto::aes_decrypt_ecb_base64(std::string base64_data, unsigned char * key, int keylen)
  85. {
  86. try
  87. {
  88. std::string aes_encrypt_data;
  89. CryptoPP::Base64Decoder decoder;
  90. decoder.Attach(new CryptoPP::StringSink(aes_encrypt_data));
  91. decoder.Put(reinterpret_cast<const unsigned char*>(base64_data.c_str()), base64_data.length());
  92. decoder.MessageEnd();
  93. std::string decrypt_data;
  94. CryptoPP::ECB_Mode<CryptoPP::AES>::Decryption ebc_description(key, keylen);
  95. CryptoPP::StreamTransformationFilter stf_description(
  96. ebc_description,
  97. new CryptoPP::StringSink(decrypt_data),
  98. CryptoPP::BlockPaddingSchemeDef::DEFAULT_PADDING
  99. );
  100. stf_description.Put(
  101. reinterpret_cast<const unsigned char*>(aes_encrypt_data.c_str()),
  102. aes_encrypt_data.length()
  103. );
  104. stf_description.MessageEnd();
  105. return decrypt_data;
  106. }
  107. catch (std::exception e) {
  108. std::cout << e.what() << std::endl;
  109. return "";
  110. }
  111. }