Openssl c++3 des ecb暗号化

1066 ワード

外部の協力者をドッキングして、3 desecb暗号化を使って、その中の補完方式はPKCS 5 Paddingです.具体的なアルゴリズムの原理はネット上で探すことができて、ネット上で多くて、しかしコードの穴は比較的に多いです.
実装後のコードを直接入力します.
int Des3EdsEncrypt(const std::string& rand_key, const std::string& in, std::string& out)
{
	char out_array[10240];
	char in_array[10240];
	memset(out_array, 0, 10240);
	memset(in_array, 0, 10240);

	DES_key_schedule keyschedc1;
	DES_key_schedule keyschedc2;
	DES_key_schedule keyschedc3;

	if (rand_key.size() < 24)
	{
		LOG_ERROR("rand_key size < 24");
		return -1;
	}

	DES_set_key((DES_cblock *)rand_key.substr(0,8).c_str(), &keyschedc1);
	DES_set_key((DES_cblock *)rand_key.substr(8,8).c_str(), &keyschedc2);
	DES_set_key((DES_cblock *)rand_key.substr(16,8).c_str(), &keyschedc3);

	//    8                 0,  8 0
	int data_rest = in.size()%8;
	char ch = 8-data_rest;

	int len = (in.size()/8 + 1)*8;

	for (int i=0; i