You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-31 18:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <cstdlib>
 | |
| #include <string>
 | |
| using namespace std;
 | |
| 
 | |
| #include "sql_crypt.h"
 | |
| 
 | |
| namespace funcexp
 | |
| {
 | |
| void SQL_CRYPT::init(ulong* rand_nr)
 | |
| {
 | |
|   uint i;
 | |
|   my_rnd_init(&rand, rand_nr[0], rand_nr[1]);
 | |
| 
 | |
|   for (i = 0; i <= 255; i++)
 | |
|     decode_buff[i] = (char)i;
 | |
| 
 | |
|   for (i = 0; i <= 255; i++)
 | |
|   {
 | |
|     int idx = (uint)(my_rnd(&rand) * 255.0);
 | |
|     char a = decode_buff[idx];
 | |
|     decode_buff[idx] = decode_buff[i];
 | |
|     decode_buff[+i] = a;
 | |
|   }
 | |
|   for (i = 0; i <= 255; i++)
 | |
|     encode_buff[(unsigned char)decode_buff[i]] = i;
 | |
|   org_rand = rand;
 | |
|   shift = 0;
 | |
| }
 | |
| 
 | |
| void SQL_CRYPT::encode(char* str, uint length)
 | |
| {
 | |
|   for (uint i = 0; i < length; i++)
 | |
|   {
 | |
|     shift ^= (uint)(my_rnd(&rand) * 255.0);
 | |
|     uint idx = (uint)(unsigned char)str[0];
 | |
|     *str++ = (char)((unsigned char)encode_buff[idx] ^ shift);
 | |
|     shift ^= idx;
 | |
|   }
 | |
| }
 | |
| 
 | |
| void SQL_CRYPT::decode(char* str, uint length)
 | |
| {
 | |
|   for (uint i = 0; i < length; i++)
 | |
|   {
 | |
|     shift ^= (uint)(my_rnd(&rand) * 255.0);
 | |
|     uint idx = (uint)((unsigned char)str[0] ^ shift);
 | |
|     *str = decode_buff[idx];
 | |
|     shift ^= (uint)(unsigned char)*str++;
 | |
|   }
 | |
| }
 | |
| 
 | |
| }  // namespace funcexp
 |