Esempio n. 1
0
void EsealBDOperationQueryReplay (sEsealBDWorkTypeDef work, CPU_INT8U ch, sEsealBDStateTypeDef state, 
                                  sEsealBDSensorTypeDef sensor, FNCT_COMM comm)
{
    CPU_INT8U  data[SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + ESEALBD_OPERATION_REPLAY_SIZE_QUERY];
    CPU_INT16U len;
    CPU_INT32U id;
    CPU_INT32U rn;
    CPU_INT32U key;
    sCiphertextTypeDef *ciphertext;
    CPU_INT8U *p;
    sHeadTypeDef *head;
    sEsealBDOperatioQueryReplayTypeDef *replay;
    
    id  = EsealBDGetID();
    rn  = EsealBDGetRN();
    key = EsealBDGetKey();
    
    ciphertext = (sCiphertextTypeDef *)&data[SOCKET_HEAD_SIZE];
    ciphertext->id  = NToHL(id);
    ciphertext->rn  = NToHL(rn);
    
    ciphertext->len = NToHS(HEAD_HEAD_SIZE + ESEALBD_OPERATION_REPLAY_SIZE_QUERY);
    
    p = (CPU_INT8U *)&ciphertext->data;
    
    head = (sHeadTypeDef *)p;
    
    replay = (sEsealBDOperatioQueryReplayTypeDef *)&head->data;    
    
    replay->id           = NToHL(id);
    replay->work.period  = NToHS(work.period);
    replay->work.window  = work.window;
    replay->work.channel = work.channel;
    replay->ch           = ch;
    replay->state        = state;
    replay->sensor       = sensor;
    
    len  = ESEALBD_OPERATION_REPLAY_SIZE_QUERY;
    head->len = NToHS(len);
    head->type = NToHS(ESEALBD_OPERATION_TYPE_REPLAY_QUERY);
    head->crc = NToHS(GetCRC16(&data[SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_CRC_POS],
                               HEAD_HEAD_SIZE - HEAD_CRC_LEN + len)); 
    
    Encrypt(id, rn, key, (CPU_INT8U *)&ciphertext->data, NToHS(ciphertext->len));
    
    SocketPackageSend(ESEALBD_OPERATION_PORT, data, CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + len); 
    comm(data, SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + len);
}
Esempio n. 2
0
int PackSetInfoGWQuick(char *pdubuf, char *mac, char *password, PKT_SET_INFO_GW_QUICK *setting, char *key, int klen)
{
	DWORD tid;
	char tmpbuf[INFO_PDU_LENGTH];
	
	tid = PackCmdHdr(tmpbuf, NET_CMD_ID_QUICKGW_EX, mac, password);

	memcpy(tmpbuf+sizeof(IBOX_COMM_PKT_HDR_EX), setting, sizeof(PKT_SET_INFO_GW_QUICK));

#ifdef ENCRYPTION
	Encrypt(klen, key, tmpbuf, INFO_PDU_LENGTH, pdubuf);
#else
	memcpy(pdubuf, tmpbuf, INFO_PDU_LENGTH);
#endif
	return (tid);
}
Esempio n. 3
0
int RASocket::zprintf( const char * szText, ... )
{
    if( !szText ) return 0;
    va_list ap;
    va_start(ap, szText);
    char*megabuffer=new char[1024];
    unsigned int sz=vsnprintf(megabuffer,1024,szText,ap);
    #ifdef RA_CRYPT
    Encrypt(megabuffer,sz);
    #endif

    send(r,megabuffer,sz,0);
    delete [] megabuffer;
    va_end(ap);
    return 0;
}
Esempio n. 4
0
/// Output function
int RASocket::zprintf( const char * szText, ... )
{
    if( !szText ) return 0;
    va_list ap;
    va_start(ap, szText);
    /// \todo Remove buffer length here. Can be >1024 (e.g. list of users)
    char *megabuffer=new char[1024];
    unsigned int sz=vsnprintf(megabuffer,1024,szText,ap);
    #ifdef RA_CRYPT
    Encrypt(megabuffer,sz);
    #endif

    send(r,megabuffer,sz,0);
    delete [] megabuffer;
    va_end(ap);
    return 0;
}
Esempio n. 5
0
void RijndaelEncrypt(RijndaelContextPtr context,void* pInput,unsigned int nSize,void* pOutput)
{
	unsigned int i;
	//需要计算的最小长度
	unsigned int plainSize = context->plainSize;
	if (nSize % plainSize != 0)
	{
		nSize += plainSize - (nSize % plainSize);
		//清0
		memset((unsigned char*)pOutput + nSize,0,plainSize - (nSize % plainSize));
	}
	for (i=0; i<nSize; i += plainSize)
	{
		memcpy((unsigned char*)pOutput + i,(unsigned char*)pInput + i,plainSize);
		Encrypt(context,(unsigned char*)pOutput + i);
	}
}
Esempio n. 6
0
int Encrypt_Test(PRE_KEY *key)
{
	int j = g_time;
	while(j--)
	{
		int i = r_time;
		Cipher *C = Encrypt(key->pk,m);
		begin = clock();
		while(i--) {OPENSSL_free(Decrypt(key,C));}
		end = clock();
		C->~pre_cipher_st();

		printf("%d:Encrypt : %f ms...\n",10-j,(double)(end-begin));
	}

	return 1;
}
int main()
{
	char SourceString[THE_STRING_LENGTH] = "¡££¬¡¢£»£º£¿£¡¡­¡ª¡¤¡¥¡§0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789¡®¡¯¡°¡±¡©¡«¡¬¡Ã£¢¡Ã£§£à£ü¡¨¡²¡³¡´¡µ¡¶¡·¡¸¡¹¡º¡»£®¡¼¡½¡¾¡¿£¨£©£Û£Ý£û£ý";
	char TargetString[THE_STRING_LENGTH];
	printf("The Source String:%s\r\n", SourceString);

	Encrypt(SourceString, strlen(SourceString)+1, TargetString, strlen(SourceString)+1);
	printf("The Encrypt String:%s\r\n", TargetString);

	memset(SourceString, 0, sizeof(char)*THE_STRING_LENGTH);

	Decrypt(TargetString, strlen(TargetString)+1, SourceString, strlen(TargetString)+1);
	printf("The Decrypt Strng:%s\r\n", SourceString);
	getchar();


	return 0;
}
Esempio n. 8
0
//Decrypt from Input Buffer to Output Buffer
//Returns false if n is multiple of 8
void BlowFish::Decrypt(const unsigned char* in, unsigned char* out, unsigned int n, int iMode)
{
	//Check the buffer's length - should be > 0 and multiple of 8
	if((n==0)||(n%8!=0))
		//throw exception("Incorrect buffer length");
		return;

	SBlock work;
	if(iMode == CBC) //CBC mode, using the Chain
	{
		SBlock crypt, chain(m_oChain);
		for(; n >= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			crypt = work;
			Decrypt(work);
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, out+=8);
		}
	}
	else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
	{
		SBlock crypt, chain(m_oChain);
		for(; n >= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			Encrypt(chain);
			crypt = work;
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, out+=8);
		}
	}
	else //ECB mode, not using the Chain
	{
		for(; n >= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			Decrypt(work);
			BlockToBytes(work, out+=8);
		}
	}
}
Esempio n. 9
0
bool RSA::DefaultTest(unsigned int size)
{
    if(size < 64)
    {
        std::cout << "RSA test invald input\n";
        return false;
    }
    BigInteger pub, priv, modulus;
    Utils::TestGenerator generator;
    Keygen(pub, priv, modulus, &generator, size);
    BigInteger message = generator.getBig(size) % modulus;
    BigInteger crypto = Encrypt(message, pub, modulus);
    BigInteger message1 = Decrypt(crypto, priv, modulus);
    bool result = (message1 == message);
    if(result)
        std::cout << "RSA test OK\n";
    else std::cout << "RSA test ERROR\n";
    return result;
}
Esempio n. 10
0
bool RSA::CustomTest(unsigned int size, Utils::Generator *generator, int threads, unsigned int precision, unsigned int distance)
{
    if(size < 64 || generator == NULL)
    {
        std::cout << "RSA test invalid input\n";
        return false;
    }
    BigInteger pub, priv, modulus;
    
    ParallelKeygen(pub, priv, modulus, generator, size, threads, precision, distance);
    BigInteger message = generator->getBig(size) % modulus;
    BigInteger crypto = Encrypt(message, pub, modulus);
    BigInteger message1 = Decrypt(crypto, priv, modulus);
    bool result = message1 == message;
    if(result)
        std::cout << "RSA test OK\n";
    else std::cout << "RSA test ERROR\n";
    return result;
}
Esempio n. 11
0
int main(void)
{
	HCRYPTPROV hCryptProv = 0;
	HCRYPTKEY key = 0;
	unsigned long cLen = 0;
	char *cipherText = 0;
	char *plainText = "PLAIN_TEXT_PLAIN_TEXT\0";
	char *password = "******";
	unsigned char *decrypted = 0;

	if (!CryptoInit(&key, &hCryptProv, password, strlen(password)))
	{
		printf("Crypto initializing failed\n");
		return EXIT_FAILURE;
	}

	if (!Encrypt(key, &cipherText, &cLen, (unsigned char *)plainText, strlen(plainText)))
	{
		printf("Encryption failed\n");
		if (hCryptProv) CryptReleaseContext(hCryptProv, 0);
		return EXIT_FAILURE;
	}

	printf("Encrypted string: %s\n", cipherText);

	if (!Decrypt(key, &decrypted, cipherText, cLen))
	{
		printf("Decryption failed\n");
		SAFE_FREE(cipherText);
		if (hCryptProv) CryptReleaseContext(hCryptProv, 0);
		return EXIT_FAILURE;
	}

	SAFE_FREE(cipherText);

	printf("Decrypted string: %s\n", decrypted);

	SAFE_FREE(decrypted);

	CryptoUninit(key, hCryptProv);

	return EXIT_SUCCESS;
}
int main()
{
	int i,n;
	char s[80],key[12],encrypt[80];              //输入串,密钥,加密后的串
	scanf("%s",key);
	getchar();                                            //吃掉输入密钥后的那个回车
	GeneAlphabet();                                  //产生字母表
	Reverse(key);                                       //将密钥key反转
	GetCharMap(key);                               //得到字母表的加密字符的对应表
	while(1)
	{
		gets(s);                                            //得到每行要加密的串
		if(strcmp(s,"#") == 0) break;            //如果输入#号则终止程序
		strcpy(encrypt,"");                            //将加密后的串先清空
		Encrypt(s,key,encrypt);                     //加密
		puts(encrypt);                                  //输出
	}
	return 0;
}
Esempio n. 13
0
/*********************加密*********************/
JNIEXPORT jint JNICALL Java_com_softtanck_tanck_aes_utils_AesUtils_Encrypt(JNIEnv *env,
                                                                           jclass thiz,
                                                                           jbyteArray msg,
                                                                           jbyteArray key,
                                                                           jbyteArray cipher,
                                                                           jint length) {
    jbyte *pMsg = (jbyte *) (*env)->GetByteArrayElements(env, msg, 0);
    jbyte *pKey = (jbyte *) (*env)->GetByteArrayElements(env, key, 0);
    jbyte *pCipher = (jbyte *) (*env)->GetByteArrayElements(env, cipher, 0);

    if (!pMsg || !pKey || !pCipher) {
        return -1;
    }
    int flag = Encrypt(pMsg, pKey, pCipher, length); //加密函数
    (*env)->ReleaseByteArrayElements(env, msg, pMsg, 0);
    (*env)->ReleaseByteArrayElements(env, key, pKey, 0);
    (*env)->ReleaseByteArrayElements(env, cipher, pCipher, 0);
    return flag;
}
Esempio n. 14
0
void EsealBDOperationError (CPU_INT8U error, FNCT_COMM comm)
{
    CPU_INT8U  data[SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + ESEALBD_OPERATION_REPLAY_SIZE_ERROR];
    CPU_INT16U len;
    CPU_INT32U id;
    CPU_INT32U rn;
    CPU_INT32U key;
    sCiphertextTypeDef *ciphertext;
    CPU_INT8U *p;
    sHeadTypeDef *head;
    sEsealBDOperatioErrornReplayTypeDef *replay;
    
    id  = EsealBDGetID();
    rn  = EsealBDGetRN();
    key = EsealBDGetKey();
    
    ciphertext = (sCiphertextTypeDef *)&data[SOCKET_HEAD_SIZE];
    ciphertext->id  = NToHL(id);
    ciphertext->rn  = NToHL(rn);
    
    ciphertext->len = NToHS(HEAD_HEAD_SIZE + ESEALBD_OPERATION_REPLAY_SIZE_ERROR);
    
    p = (CPU_INT8U *)&ciphertext->data;
    
    head = (sHeadTypeDef *)p;
    
    replay = (sEsealBDOperatioErrornReplayTypeDef *)&head->data;
    
    replay->id = NToHL(id);
    replay->error = error;
    
    len  = ESEALBD_OPERATION_REPLAY_SIZE_ERROR;
    head->len = NToHS(len);
    head->type = NToHS(ESEALBD_OPERATION_TYPE_REPLAY_ERROR);
    head->crc = NToHS(GetCRC16(&data[SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_CRC_POS],
                               HEAD_HEAD_SIZE - HEAD_CRC_LEN + len)); 
    
    Encrypt(id, rn, key, (CPU_INT8U *)&ciphertext->data, NToHS(ciphertext->len));
    
    SocketPackageSend(ESEALBD_OPERATION_PORT, data, CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + len); 
    comm(data, SOCKET_HEAD_SIZE + CHIPHERTEXT_HEAD_SIZE + HEAD_HEAD_SIZE + len);
}
Esempio n. 15
0
//Decrypt Buffer in Place
//Returns false if n is multiple of 8
void CBlowFish::Decrypt(unsigned char* buf, size_t n, int iMode)
{
    //Check the buffer's length - should be > 0 and multiple of 8
    if((n==0)||(n%8!=0))
        throw std::exception("Incorrect buffer length");
    SBlock work;
    if(iMode == CBC) //CBC mode, using the Chain
    {
        SBlock crypt, chain(m_oChain);
        for(; n >= 8; n -= 8)
        {
            BytesToBlock(buf, work);
            crypt = work;
            Decrypt(work);
            work ^= chain;
            chain = crypt;
            BlockToBytes(work, buf+=8);
        }
    }
    else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
    {
        SBlock crypt, chain(m_oChain);
        for(; n >= 8; n -= 8)
        {
            BytesToBlock(buf, work);
            Encrypt(chain);
            crypt = work;
            work ^= chain;
            chain = crypt;
            BlockToBytes(work, buf+=8);
        }
    }
    else //ECB mode, not using the Chain
    {
        for(; n >= 8; n -= 8)
        {
            BytesToBlock(buf, work);
            Decrypt(work);
            BlockToBytes(work, buf+=8);
        }
    }
}
int main(){	

	//https://github.com/SkullCrusher/ProjectMicheal

	//Encrypted with Seed 23: "ct$D_p)INQa#)05Idv.N9Ynu|Ll$8Ss+5<\\pw.Dr"

	//Encrypted with Seed 43: "~-DR`EYp'18L(H3S]n\")I_it+Kdu+8Mm#.7AW%E0PVag)9J`\"8?Tj,/=Nd4"

	//Encrypted with Seed 50: "<RhzV'Va1<KTk!OTetEynRGP6Gu#5>"

	//Encrypted with Seed (Unknown): "~*5Jj%(=]dty/J\\ry!AKRfm/:Oor4K_mIis+AS/^/:hs$-DX(->M|mc!TH2c3<GO"


	//An example encryption string.
	std::string Message = "http://www.cplusplus.com/doc/tutorial/variables/";
	
	Encrypt(Message, 23);

	return 0;
}
Esempio n. 17
0
/// Output function
void RASocket::zprint( const char * szText )
{
    if( !szText )
        return;

    #ifdef RA_CRYPT

    char *megabuffer = mangos_strdup(szText);
    unsigned int sz=strlen(megabuffer);
    Encrypt(megabuffer,sz);
    send(r,megabuffer,sz,0);
    delete [] megabuffer;

    #else

    unsigned int sz=strlen(szText);
    send(r,szText,sz,0);

    #endif
}
int main()
{
	char input;

	do
	{
		
		printf("Enter option: ");
		scanf("%c", &input);		

		if (input == 'c' || input == 'd')
		{
			clear();
			Encrypt();
		}

	} while (input != 'q');

	return 0;
}
int main()
{
	char Message[255],c;
	while(1)
	{
		printf("Enter option: ");
		scanf("%c",&c);
		if(c=='c'||c=='d')
		{
			scanf("%c",&c);
			if(c==' ')
			{
				ReadString(Message);
				Encrypt(Message);
				printf("%s\n",Message);
			}
		}
		else if(c=='q') return 0;
	}
}
Esempio n. 20
0
int main (int argc, char ** argv)
{
	Skipjack_CTX ctx;
	u8 * adata = "\x33\x22\x11\x00\xdd\xcc\xbb\xaa";
	u8 * akey = "\x00\x99\x88\x77\x66\x55\x44\x33\x22\x11";
	
	u8 digest[8];
	u8 decrypt[8];

	START_ENCRYPT();					
	Skipjack_init(&ctx, akey);
	Encrypt(&ctx, adata, digest);

	START_DECRYPT();
	Skipjack_init(&ctx, akey);
	Decrypt(&ctx, digest, decrypt);

	END_EXPE();
	return 0;
}
Esempio n. 21
0
File: sea.c Progetto: Wmaia/bloc
int main()
{
#ifdef PRINT
	uart1_init();
	u16 j;
#endif
	u16 i;
	u16 state[2*NB];
	u16 mkey[2*NB];
	u16 rkey[NBROUND][2*NB];
	
	
	for(i=0;i<2*NB;i++) state[i]=i;
	for(i=0;i<2*NB;i++) mkey[i]=2*i;

#ifdef PRINT
	printf("----------Depart----------\n\n");
	for(j=1;j<=2*NB;j++) printf("%4X ",state[2*NB - j]);printf("\n\n");
	printf("----------Fin Depart----------\n\n");
	printf("----------Encryption----------\n\n");
#endif

	START_ENCRYPT();
	KeySchedul(mkey,rkey);
	Encrypt(state,rkey);
	
#ifdef PRINT
	for(j=1;j<=2*NB;j++) printf("%4X ",state[2*NB - j]);printf("\n\n");
	printf("----------Fin Encryption----------\n\n");
	printf("----------Decryption----------\n\n");
#endif
	START_DECRYPT();
	KeySchedul(mkey,rkey);
	Decrypt(state,rkey);
#ifdef PRINT
	for(j=1;j<=2*NB;j++) printf("%4X ",state[2*NB - j]);printf("\n\n");
	printf("----------Fin Decryption----------\n\n");
#endif
	END_EXPE();
	return 0;
}
Esempio n. 22
0
void CRemoteProfileLoginDlg::OnSelchangeAcctname() 
{
	UpdateData(TRUE);
	// Save the previous stuff?
	CString csKey;
	// Populate the fields with the values of the new selection
	m_iSel = m_ccbName.GetCurSel();
	if ( m_iSel == -1 )
	{
		m_cePassword.SetWindowText("");
		UpdateData(FALSE);
		return;
	}
	m_ccbName.GetLBText(m_iSel, m_csAccountName);
	csKey.Format("%s\\%s", REGKEY_REMOTELOGIN, m_csAccountName);
	m_cePassword.SetWindowText(Encrypt(Main->GetRegistryString("Password", "", hRegLocation, csKey)));

	// Update the last account setting
	Main->PutRegistryString("LastRemoteProfileAccount", m_csAccountName);
	UpdateData(FALSE);
}
Esempio n. 23
0
/****************************************************************************************************
* @函数名称:	WriteData
* @功  能:		将数据写入加密狗
* @参  数:		无
* @返回值:		S_OK 操作成功,否则 返回对应的错误代码
* @说  明:		获取基本信息--->加密数据--->写狗
****************************************************************************************************/
HRESULT CHikDog::WriteData()
{
	if( S_OK != SetHikInfo() )								//顺序1
	{		
		//WriteLog("海康狗-设置基本信息失败");
		return S_FALSE;
	}

	if( S_OK != Encrypt() )									//顺序2
	{
		//WriteLog("海康狗-加密数据失败");
		return S_FALSE;
	}

	if( S_OK != CDog::WriteData() )						//顺序3
	{
		//WriteLog("海康狗-写数据失败");
		return  S_FALSE;
	}
	return  S_OK;
}
Esempio n. 24
0
/*------------------------------------------------------------------------
 * Encrypt the user's cleartext password using the AES 128-bit (ECB)
 *  encryption algorithm.
 *
 *  @param session	The MXit session object
 *  @return			The encrypted & encoded password.  Must be g_free'd when no longer needed.
 */
char* mxit_encrypt_password( struct MXitSession* session )
{
	char			key[16 + 1];
	char			exkey[512];
	GString*		pass			= NULL;
	GString*		encrypted		= NULL;
	char*			base64;
	unsigned int	i;

	purple_debug_info( MXIT_PLUGIN_ID, "mxit_encrypt_password\n" );

	/* build the AES encryption key */
	g_strlcpy( key, INITIAL_KEY, sizeof( key ) );
	memcpy( key, session->clientkey, strlen( session->clientkey ) );
	ExpandKey( (unsigned char*) key, (unsigned char*) exkey );

	/* build the secret data to be encrypted: SECRET_HEADER + password */
	pass = g_string_new( SECRET_HEADER );
	g_string_append( pass, purple_connection_get_password( session->con ) );
	padding_add( pass );		/* add ISO10126 padding */

	/* now encrypt the secret. we encrypt each block separately (ECB mode) */
	encrypted = g_string_sized_new( pass->len );
	for ( i = 0; i < pass->len; i += 16 ) {
		char	block[16];

		Encrypt( (unsigned char*) pass->str + i, (unsigned char*) exkey, (unsigned char*) block );
		g_string_append_len( encrypted, block, 16 );
	}

	/* now base64 encode the encrypted password */
	base64 = purple_base64_encode( (unsigned char*) encrypted->str, encrypted->len );
	g_string_free( encrypted, TRUE );

	g_string_free( pass, TRUE );

	return base64;
}
int main(void){

    unsigned char key[Nk*4] = { 1, 2, 3, 4, 5, 6, 7, 8 };
    unsigned char exkey[Nb * (Nr + 1) * 4];
    unsigned char State[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7 };
 
    char hexs[16 * 2 + 1];
    KeyExpansion(key, exkey);
 
    Encrypt(State, exkey);
    toHex(State, 16, hexs);
    printf("%s\n", hexs);
 
    Decrypt(State, exkey);
    toHex(State, 16, hexs);
    printf("%s\n", hexs);
/*
输出:
33D19245695D96C60CCB73DB7E0FB1E9
01020304050607080907070707070707
*/

}
Esempio n. 26
0
/* string encryptString (in string text); */
NS_IMETHODIMP nsSecretDecoderRing::
EncryptString(const char *text, char **_retval)
{
  nsNSSShutDownPreventionLock locker;
  nsresult rv = NS_OK;
  unsigned char *encrypted = 0;
  PRInt32 eLen;

  if (text == nsnull || _retval == nsnull) {
    rv = NS_ERROR_INVALID_POINTER;
    goto loser;
  }

  rv = Encrypt((unsigned char *)text, PL_strlen(text), &encrypted, &eLen);
  if (rv != NS_OK) { goto loser; }

  rv = encode(encrypted, eLen, _retval);

loser:
  if (encrypted) PORT_Free(encrypted);

  return rv;
}
int main()
{
	std::cout << "On calc prime num ... " << std::endl;
	createprime();
	std::cout << "On calc key ... " << std::endl;
	calcKey();
	bool * testbool = new bool[7]{
		true, false, false,
			false, true, false, true
	};
	std::cout << "before encryption:" << std::endl;
	outputboolarray(testbool,7);
	std::cout << std::endl;
	BinNum R = Encrypt(testbool, 7);
	std::cout << "after encryption:" << std::endl;
	outputB(R);
	BinNum dec = Decrypt(R);
	std::cout << "after decryption:" << std::endl;
	outputB(dec);
	std::cout << "if decryption is not equal the test ,may be overflow on calc (a+b) % n, i can't fix it,sorry for that" << std::endl;
	system("pause");
	return 0;
}
// static
bool LegacySymmetric::Encrypt(
    const api::Crypto& crypto,
    const String& strKey,
    const String& strPlaintext,
    String& strOutput,
    const String& pstrDisplay,
    bool bBookends,
    const OTPassword* pAlreadyHavePW)
{
    if (!strKey.Exists() || !strPlaintext.Exists()) {
        LogDetail(OT_METHOD)(__FUNCTION__)(
            ": Nonexistent: either the key or the "
            "plaintext. Please supply. (Failure).")
            .Flush();
        return false;
    }

    implementation::LegacySymmetric theKey(crypto);

    if (!theKey.SerializeFrom(strKey)) {
        LogDetail(OT_METHOD)(__FUNCTION__)(
            ": Failed trying to load symmetric key from "
            "string. (Returning false).")
            .Flush();
        return false;
    }

    // By this point, we know we have a plaintext and a symmetric Key.
    //
    return Encrypt(
        theKey,
        strPlaintext,
        strOutput,
        pstrDisplay,
        bBookends,
        pAlreadyHavePW);
}
int main(){	

	//https://github.com/SkullCrusher/ProjectMicheal

	//"Lol you can decrypt I see. try the rest."
	//Encrypted with Seed 23: "ct$D_p)INQa#)05Idv.N9Ynu|Ll$8Ss+5<\\pw.Dr"

	//"SkullCrusher: I hope this works right, I did not test alot."
	//Encrypted with Seed 43: "~-DR`EYp'18L(H3S]n\")I_it+Kdu+8Mm#.7AW%E0PVag)9J`\"8?Tj,/=Nd4"

	//http://i.imgur.com/4SBSgDo.jpg
	//Encrypted with Seed 50: "<RhzV'Va1<KTk!OTetEynRGP6Gu#5>"

	//"This was encrypted here is a url: http://i.imgur.com/OTz3RH1.gif"
	//Encrypted with Seed 42: "~*5Jj%(=]dty/J\\ry!AKRfm/:Oor4K_mIis+AS/^/:hs$-DX(->M|mc!TH2c3<GO"
	
	//An example encryption string.
	std::string Message = "http://www.cplusplus.com/doc/tutorial/variables/";
	
	Encrypt(Message, 17);
	Decrypt(Message, 17);

	return 0;
}
Esempio n. 30
0
int aes_handshake(int socket, unsigned char *key)
{
	unsigned char expkey[4 * 4 * (10 + 1)];

	unsigned char token[TOKEN_SIZE];
	unsigned char enc[TOKEN_SIZE];
	unsigned char response[TOKEN_SIZE];
	int i;

	ExpandKey(key,expkey);

	for(i=0;i<TOKEN_SIZE;i++)
	{
		token[i] = rand()%255;
	}

	Encrypt(token, expkey, enc);

	//send token
	write(socket, enc, TOKEN_SIZE);

	//read response
	if(read_nbytes(socket, enc, TOKEN_SIZE) == 0)
		return 0;

	Decrypt(enc, expkey, response);

	//check response
	for(i=0;i<TOKEN_SIZE;i++)
	{
		if((response[i] ^ token_xor_key[i]) != token[i])
			return 0; 
	}

	return 1;
}