コード例 #1
0
ファイル: cbc.c プロジェクト: boosheng/masterca
void cbc_encipher(const unsigned char *plaintext, unsigned char *ciphertext,
   const unsigned char *key, int size) {

unsigned char      temp[8];

int                i;

/*****************************************************************************
*                                                                            *
*  Encipher the initialization vector.                                       *
*                                                                            *
*****************************************************************************/

des_encipher(&plaintext[0], &ciphertext[0], key);

/*****************************************************************************
*                                                                            *
*  Encipher the buffer using DES in CBC mode.                                *
*                                                                            *
*****************************************************************************/

i = 8;

while (i < size) {

   bit_xor(&plaintext[i], &ciphertext[i - 8], temp, 64);
   des_encipher(temp, &ciphertext[i], NULL);
   i = i + 8;

}

return;

}
コード例 #2
0
ファイル: des.c プロジェクト: CrashSerious/Pi-hercules
void des3_encrypt(des3_context *ctx, CHAR8 input, CHAR8 output)
{
    DESContext *sched = ctx->sched;
    word32 out[2], xL, xR;
    xL = GET_32BIT_MSB_FIRST(input);
    xR = GET_32BIT_MSB_FIRST(input+4);
    des_encipher(out, xL, xR, sched);
    xL = out[0]; xR = out[1];
    des_decipher(out, xL, xR, sched+1);
    xL = out[0]; xR = out[1];
    des_encipher(out, xL, xR, sched+2);
    PUT_32BIT_MSB_FIRST(output, out[0]);
    PUT_32BIT_MSB_FIRST(output+4, out[1]);
}
コード例 #3
0
ファイル: sshdes.c プロジェクト: rdebath/sgt
static void des_cbc3_decrypt(unsigned char *dest, const unsigned char *src,
                             unsigned int len, DESContext *scheds) {
    word32 out[2], iv0, iv1, xL, xR;
    unsigned int i;

    assert((len & 7) == 0);

    iv0 = scheds->div0;
    iv1 = scheds->div1;
    for (i = 0; i < len; i += 8) {
        xL = GET_32BIT_MSB_FIRST(src); src += 4;
        xR = GET_32BIT_MSB_FIRST(src); src += 4;
        des_decipher(out, xL, xR, &scheds[2]);
        des_encipher(out, out[0], out[1], &scheds[1]);
        des_decipher(out, out[0], out[1], &scheds[0]);
        iv0 ^= out[0];
        iv1 ^= out[1];
        PUT_32BIT_MSB_FIRST(dest, iv0); dest += 4;
        PUT_32BIT_MSB_FIRST(dest, iv1); dest += 4;
        iv0 = xL;
        iv1 = xR;
    }
    scheds->div0 = iv0;
    scheds->div1 = iv1;
}
コード例 #4
0
ファイル: encrypt-1.c プロジェクト: whatot/ma_c
static void test_des() {
	unsigned char destmp[8];
	unsigned char desptx[8];
	unsigned char desctx[8];
	unsigned char deskey[8];

	fprintf(stdout, "Enciphering with DES\n");

	destmp[0] = 0xa9;
	destmp[1] = 0x10;
	destmp[2] = 0x11;
	destmp[3] = 0x38;
	destmp[4] = 0x93;
	destmp[5] = 0xca;
	destmp[6] = 0xb4;
	destmp[7] = 0xa1;

	deskey[0] = 0x01;
	deskey[1] = 0x1f;
	deskey[2] = 0x01;
	deskey[3] = 0x1f;
	deskey[4] = 0x01;
	deskey[5] = 0x0e;
	deskey[6] = 0x01;
	deskey[7] = 0x0e;

	fprintf(stdout, "Before enciphering\n");
	print_des_8(destmp, "destmp");
	print_des_8(deskey, "deskey");

	des_encipher(destmp, desctx, deskey);

	fprintf(stdout, "After enciphering\n");
	print_des_8(destmp, "destmp");
	print_des_8(desctx, "desctx");

	fprintf(stdout, "Before deciphering\n");
	print_des_8(desctx, "desctx");
	print_des_8(deskey, "deskey");

	des_decipher(desctx, desptx, deskey);

	fprintf(stdout, "After deciphering\n");
	print_des_8(desctx, "desctx");
	print_des_8(desptx, "desptx");

	fprintf(stdout, "\n");
	return;
}
コード例 #5
0
ファイル: sshdes.c プロジェクト: rdebath/sgt
static void des_cbc_encrypt(unsigned char *dest, const unsigned char *src,
                            unsigned int len, DESContext *sched) {
    word32 out[2], iv0, iv1;
    unsigned int i;

    assert((len & 7) == 0);

    iv0 = sched->eiv0;
    iv1 = sched->eiv1;
    for (i = 0; i < len; i += 8) {
        iv0 ^= GET_32BIT_MSB_FIRST(src); src += 4;
        iv1 ^= GET_32BIT_MSB_FIRST(src); src += 4;
        des_encipher(out, iv0, iv1, sched);
        iv0 = out[0];
        iv1 = out[1];
        PUT_32BIT_MSB_FIRST(dest, iv0); dest += 4;
        PUT_32BIT_MSB_FIRST(dest, iv1); dest += 4;
    }
    sched->eiv0 = iv0;
    sched->eiv1 = iv1;
}
コード例 #6
0
ファイル: ex-1.c プロジェクト: neutered/propgcc
int main(int argc, char **argv) {

unsigned char      destmp[8],
                   desptx[8],
                   desctx[8],
                   deskey[8];

Huge               rsatmp,
                   rsaptx,
                   rsactx;

RsaPubKey          rsapubkey;
RsaPriKey          rsaprikey;

int                i;

/*****************************************************************************
*                                                                            *
*  Encipher some data using DES.                                             *
*                                                                            *
*****************************************************************************/

fprintf(stdout, "Enciphering with DES\n");

destmp[0] = 0xa9;
destmp[1] = 0x10;
destmp[2] = 0x11;
destmp[3] = 0x38;
destmp[4] = 0x93;
destmp[5] = 0xca;
destmp[6] = 0xb4;
destmp[7] = 0xa1;

deskey[0] = 0x01;
deskey[1] = 0x1f;
deskey[2] = 0x01;
deskey[3] = 0x1f;
deskey[4] = 0x01;
deskey[5] = 0x0e;
deskey[6] = 0x01;
deskey[7] = 0x0e;

fprintf(stdout, "Before enciphering\n");

fprintf(stdout, "destmp: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   destmp[0], destmp[1], destmp[2], destmp[3], destmp[4], destmp[5],
   destmp[6], destmp[7]);

fprintf(stdout, "deskey: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   deskey[0], deskey[1], deskey[2], deskey[3], deskey[4], deskey[5],
   deskey[6], deskey[7]);

des_encipher(destmp, desctx, deskey);

fprintf(stdout, "After enciphering\n");

fprintf(stdout, "destmp: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   destmp[0], destmp[1], destmp[2], destmp[3], destmp[4], destmp[5],
   destmp[6], destmp[7]);

fprintf(stdout, "desctx: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   desctx[0], desctx[1], desctx[2], desctx[3], desctx[4], desctx[5],
   desctx[6], desctx[7]);

fprintf(stdout, "Before deciphering\n");

fprintf(stdout, "desctx: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   desctx[0], desctx[1], desctx[2], desctx[3], desctx[4], desctx[5],
   desctx[6], desctx[7]);

fprintf(stdout, "deskey: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   deskey[0], deskey[1], deskey[2], deskey[3], deskey[4], deskey[5],
   deskey[6], deskey[7]);

des_decipher(desctx, desptx, deskey);

fprintf(stdout, "After deciphering\n");

fprintf(stdout, "desctx: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   desctx[0], desctx[1], desctx[2], desctx[3], desctx[4], desctx[5],
   desctx[6], desctx[7]);

fprintf(stdout, "desptx: %02x %02x %02x %02x %02x %02x %02x %02x\n",
   desptx[0], desptx[1], desptx[2], desptx[3], desptx[4], desptx[5],
   desptx[6], desptx[7]);

/*****************************************************************************
*                                                                            *
*  Encipher some data using RSA.                                             *
*                                                                            *
*****************************************************************************/

fprintf(stdout, "Enciphering with RSA\n");

rsapubkey.e = 17;
rsapubkey.n = 209;
rsaprikey.d = 53;
rsaprikey.n = 209;

fprintf(stdout, "d=%d, e=%d, n=%d\n", rsaprikey.d, rsapubkey.e, rsapubkey.n);

for (i = 0; i < 128; i++) {

   rsatmp = i;
   rsa_encipher(rsatmp, &rsactx, rsapubkey);
   rsa_decipher(rsactx, &rsaptx, rsaprikey);

   if (rsatmp == rsaptx)
      fprintf(stdout, "rsatmp=%5d, rsactx=%5d, rsaptx=%5d (OK)\n", rsatmp,
         rsactx, rsaptx);
   else
      fprintf(stdout, "rsatmp=%5d, rsactx=%5d, rsaptx=%5d (ERROR)\n", rsatmp,
         rsactx, rsaptx);

}

fprintf(stdout,"Crypto Demo finished");
return 0;

}