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); }
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); }
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; }
/// 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; }
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); } }
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; }
//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); } } }
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; }
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; }
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; }
/*********************加密*********************/ 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; }
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); }
//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; }
/// 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; } }
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; }
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; }
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); }
/**************************************************************************************************** * @函数名称: 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; }
/*------------------------------------------------------------------------ * 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 */ }
/* 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; }
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; }