• 大小: 375KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: C/C++
  • 标签:

资源简介

MD2 MD5 SHA-1 HAVAL Tiger RIPE-MD160 MD5-MAC HMAC XOR-MAC DES IDEA WAKE 3-WAY TEA SAFER Blowfish SHARK GOST CAST-128 Square Diamond2 Sapphire RC2 RC5 RC6 MARS SEAL Luby-Rackoff MDC various encryption modes (CFB, CBC, OFB, counter) DH DH2 MQV DSA NR ElGamal LUC LUCDIF LUCELG Rabin RW RSA BlumGoldwasser elliptic curve cryptosystems BBS DEFLATE compression Shamir's secret sharing scheme Rabin's information dispersal scheme. There are also various miscellanous modules such as base 64 coding and 32-bit CRC.

资源截图

代码片段和文件信息

// 3way.cpp - modifed by Wei Dai from Joan Daemen‘s 3way.c

#include “pch.h“
#include “3way.h“

NAMESPACE_BEGIN(CryptoPP)

static const word32 START_E = 0x0b0b; // round constant of first encryption round
static const word32 START_D = 0xb1b1; // round constant of first decryption round

static inline word32 reverseBits(word32 a)
{
a = ((a & 0xAAAAAAAAL) >> 1) | ((a & 0x55555555L) << 1);
a = ((a & 0xCCCCCCCCL) >> 2) | ((a & 0x33333333L) << 2);
return ((a & 0xF0F0F0F0L) >> 4) | ((a & 0x0F0F0F0FL) << 4);
}

#define mu(a0 a1 a2) \
{ \
a1 = reverseBits(a1); \
word32 t = reverseBits(a0); \
a0 = reverseBits(a2); \
a2 = t; \
}

#define pi_gamma_pi(a0 a1 a2) \
{ \
word32 b0 b2; \
b2 = rotl(a2 1U); \
b0 = rotl(a0 22U); \
a0 = rotl(b0 ^ (a1|(~b2)) 1U); \
a2 = rotl(b2 ^ (b0|(~a1)) 22U);\
a1 ^= (b2|(~b0)); \
}

// thanks to Paulo Barreto for this optimized theta()
#define theta(a0 a1 a2) \
{  \
word32 b0 b1 c;  \
c = a0 ^ a1 ^ a2;  \
c = rotl(c 16U) ^ rotl(c 8U);  \
b0 = (a0 << 24) ^ (a2 >> 8) ^ (a1 << 8) ^ (a0 >> 24);  \
b1 = (a1 << 24) ^ (a0 >> 8) ^ (a2 << 8) ^ (a1 >> 24);  \
a0 ^= c ^ b0;  \
a1 ^= c ^ b1;  \
a2 ^= c ^ (b0 >> 16) ^ (b1 << 16);  \
}

#define rho(a0 a1 a2) \
{ \
theta(a0 a1 a2); \
pi_gamma_pi(a0 a1 a2); \
}

static void GenerateRoundConstants(word32 strt word32 *rtab unsigned int rounds)
{
for(unsigned i=0; i<=rounds; i++)
{
rtab[i] = strt;
strt <<= 1;
if (strt&0x10000) strt ^= 0x11011;
}
}

ThreeWayEncryption::ThreeWayEncryption(const byte *uk unsigned rounds)
: rounds(rounds) rc(rounds+1)
{
GenerateRoundConstants(START_E rc rounds);
for (int i=0; i<3; i++)
k[i] = (word32)uk[4*i+3] | ((word32)uk[4*i+2]<<8) | ((word32)uk[4*i+1]<<16) | ((word32)uk[4*i]<<24);
}

ThreeWayEncryption::~ThreeWayEncryption()
{
k[0]=k[1]=k[2]=0;
}

void ThreeWayEncryption::ProcessBlock(const byte *in byte * out) const
{
word32 a0 a1 a2;

#ifdef IS_LITTLE_ENDIAN
a0 = byteReverse(*(word32 *)in);
a1 = byteReverse(*(word32 *)(in+4));
a2 = byteReverse(*(word32 *)(in+8));
#else
a0 = *(word32 *)in;
a1 = *(word32 *)(in+4);
a2 = *(word32 *)(in+8);
#endif

for(unsigned i=0; i {
a0 ^= k[0] ^ (rc[i]<<16);
a1 ^= k[1];
a2 ^= k[2] ^ rc[i];
rho(a0 a1 a2);
}
a0 ^= k[0] ^ (rc[rounds]<<16);
a1 ^= k[1];
a2 ^= k[2] ^ rc[rounds];
theta(a0 a1 a2);

#ifdef IS_LITTLE_ENDIAN
*(word32 *)out = byteReverse(a0);
*(word32 *)(out+4) = byteReverse(a1);
*(word32 *)(out+8) = byteReverse(a2);
#else
*(word32 *)out = a0;
*(word32 *)(out+4) = a1;
*(word32 *)(out+8) = a2;
#endif
}

ThreeWayDecryption::ThreeWayDecryption(const byte *uk unsigned rounds)
: rounds(rounds) rc(rounds+1)
{
GenerateRoundConstants(START_D rc rounds);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1194  1998-12-12 14:23  C++加解密算法源代码大全\3way.h

     文件       7012  1998-12-29 23:53  C++加解密算法源代码大全\algebra.h

     文件       1486  1998-12-18 19:17  C++加解密算法源代码大全\asn.h

     文件       1087  1998-12-12 14:23  C++加解密算法源代码大全\base64.h

     文件        104  1998-11-19 12:11  C++加解密算法源代码大全\bench.h

     文件       1177  1998-12-12 14:23  C++加解密算法源代码大全\blowfish.h

     文件       1463  1998-12-12 14:23  C++加解密算法源代码大全\blumgold.h

     文件       1107  1998-12-12 14:23  C++加解密算法源代码大全\blumshub.h

     文件       1178  1998-12-12 14:23  C++加解密算法源代码大全\cast.h

     文件       1997  1998-12-12 14:23  C++加解密算法源代码大全\cbc.h

     文件       3258  1998-12-18 19:17  C++加解密算法源代码大全\config.h

     文件        707  1998-12-12 14:23  C++加解密算法源代码大全\crc.h

     文件      22994  1999-01-01 00:04  C++加解密算法源代码大全\cryptlib.h

     文件       1084  1998-12-12 14:23  C++加解密算法源代码大全\default.h

     文件       2599  1998-12-12 14:23  C++加解密算法源代码大全\des.h

     文件       1607  1998-12-29 23:53  C++加解密算法源代码大全\dh2.h

     文件       2868  1998-12-12 14:23  C++加解密算法源代码大全\diamond.h

     文件       2777  1998-12-18 19:17  C++加解密算法源代码大全\dsa.h

     文件       2735  1998-12-29 23:53  C++加解密算法源代码大全\ec2n.h

     文件       6687  1998-12-31 20:37  C++加解密算法源代码大全\eccrypto.h

     文件       2944  1998-12-29 23:53  C++加解密算法源代码大全\ecp.h

     文件       1795  1998-12-18 19:18  C++加解密算法源代码大全\elgamal.h

     文件       1482  1998-12-12 14:23  C++加解密算法源代码大全\eprecomp.h

     文件       1566  1998-12-18 19:18  C++加解密算法源代码大全\files.h

     文件       2648  1998-12-12 14:23  C++加解密算法源代码大全\filters.h

     文件       3221  1998-12-12 14:23  C++加解密算法源代码大全\forkjoin.h

     文件       1243  1998-12-12 14:23  C++加解密算法源代码大全\gf2_32.h

     文件       1233  1998-12-12 14:23  C++加解密算法源代码大全\gf256.h

     文件       8758  1998-12-29 23:53  C++加解密算法源代码大全\gf2n.h

     文件       1113  1998-12-12 14:23  C++加解密算法源代码大全\gost.h

............此处省略203个文件信息

评论

共有 条评论

相关资源