⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serpent.c

📁 一个提供档案及Partition作加解密的程式支援以下的加密演算法AESBlowfishCAST5SerpentTriple DESTwofishAES-BlowfishAES-TwofishAES-
💻 C
📖 第 1 页 / 共 2 页
字号:
// Except as noted below copyright in this code is held by Dr B.R. Gladman 
// but free direct or derivative use is permitted subject to acknowledgement
// of its origin and subject to any constraints placed on the use of the 
// algorithm by its designers (if such constraints may exist, this will be 
// indicated below).  
//
// Dr. B. R. Gladman (                            ). 25th January 2000.
//
// This is an implementation of Serpent, an encryption algorithm designed
// by Anderson, Biham and Knudsen and submitted as a candidate for the 
// Advanced Encryption Standard programme of the US National Institute of 
// Standards and Technology.  
//
// The designers of Serpent have not placed any constraints on the use of
// this algorithm. 
//
// The S box expressions used below are Copyright (C) 2000 Dag Arne Osvik.

/* Support for multithreaded operation added by TrueCrypt Foundation */

#include "serpent.h"

//static u4byte serpent_l_key[140];

#define sb0(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   xor r3,r0   \
    __asm   mov r4,r1   \
    __asm   and r1,r3   \
    __asm   xor r4,r2   \
    __asm   xor r1,r0   \
    __asm   or  r0,r3   \
    __asm   xor r0,r4   \
    __asm   xor r4,r3   \
    __asm   xor r3,r2   \
    __asm   or  r2,r1   \
    __asm   xor r2,r4   \
    __asm   not r4      \
    __asm   or  r4,r1   \
    __asm   xor r1,r3   \
    __asm   xor r1,r4   \
    __asm   or  r3,r0   \
    __asm   xor r1,r3   \
    __asm   xor r4,r3   \
            }

#define ib0(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   not r2      \
    __asm   mov r4,r1   \
    __asm    or r1,r0   \
    __asm   not r4      \
    __asm   xor r1,r2   \
    __asm   or  r2,r4   \
    __asm   xor r1,r3   \
    __asm   xor r0,r4   \
    __asm   xor r2,r0   \
    __asm   and r0,r3   \
    __asm   xor r4,r0   \
    __asm   or  r0,r1   \
    __asm   xor r0,r2   \
    __asm   xor r3,r4   \
    __asm   xor r2,r1   \
    __asm   xor r3,r0   \
    __asm   xor r3,r1   \
    __asm   and r2,r3   \
    __asm   xor r4,r2   \
            }

#define sb1(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   not r0      \
    __asm   not r2      \
    __asm   mov r4,r0   \
    __asm   and r0,r1   \
    __asm   xor r2,r0   \
    __asm   or  r0,r3   \
    __asm   xor r3,r2   \
    __asm   xor r1,r0   \
    __asm   xor r0,r4   \
    __asm   or  r4,r1   \
    __asm   xor r1,r3   \
    __asm   or  r2,r0   \
    __asm   and r2,r4   \
    __asm   xor r0,r1   \
    __asm   and r1,r2   \
    __asm   xor r1,r0   \
    __asm   and r0,r2   \
    __asm   xor r0,r4   \
            }

#define ib1(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   mov r4,r1   \
    __asm   xor r1,r3   \
    __asm   and r3,r1   \
    __asm   xor r4,r2   \
    __asm   xor r3,r0   \
    __asm   or  r0,r1   \
    __asm   xor r2,r3   \
    __asm   xor r0,r4   \
    __asm   or  r0,r2   \
    __asm   xor r1,r3   \
    __asm   xor r0,r1   \
    __asm   or  r1,r3   \
    __asm   xor r1,r0   \
    __asm   not r4      \
    __asm   xor r4,r1   \
    __asm   or  r1,r0   \
    __asm   xor r1,r0   \
    __asm   or  r1,r4   \
    __asm   xor r3,r1   \
            }

#define sb2(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   mov r4,r0   \
    __asm   and r0,r2   \
    __asm   xor r0,r3   \
    __asm   xor r2,r1   \
    __asm   xor r2,r0   \
    __asm   or  r3,r4   \
    __asm   xor r3,r1   \
    __asm   xor r4,r2   \
    __asm   mov r1,r3   \
    __asm   or  r3,r4   \
    __asm   xor r3,r0   \
    __asm   and r0,r1   \
    __asm   xor r4,r0   \
    __asm   xor r1,r3   \
    __asm   xor r1,r4   \
    __asm   not r4      \
            }

#define ib2(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   xor r2,r3   \
    __asm   xor r3,r0   \
    __asm   mov r4,r3   \
    __asm   and r3,r2   \
    __asm   xor r3,r1   \
    __asm   or  r1,r2   \
    __asm   xor r1,r4   \
    __asm   and r4,r3   \
    __asm   xor r2,r3   \
    __asm   and r4,r0   \
    __asm   xor r4,r2   \
    __asm   and r2,r1   \
    __asm   or  r2,r0   \
    __asm   not r3      \
    __asm   xor r2,r3   \
    __asm   xor r0,r3   \
    __asm   and r0,r1   \
    __asm   xor r3,r4   \
    __asm   xor r3,r0   \
            }

#define sb3(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   mov r4,r0   \
    __asm   or  r0,r3   \
    __asm   xor r3,r1   \
    __asm   and r1,r4   \
    __asm   xor r4,r2   \
    __asm   xor r2,r3   \
    __asm   and r3,r0   \
    __asm   or  r4,r1   \
    __asm   xor r3,r4   \
    __asm   xor r0,r1   \
    __asm   and r4,r0   \
    __asm   xor r1,r3   \
    __asm   xor r4,r2   \
    __asm   or  r1,r0   \
    __asm   xor r1,r2   \
    __asm   xor r0,r3   \
    __asm   mov r2,r1   \
    __asm   or  r1,r3   \
    __asm   xor r1,r0   \
            }

#define ib3(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   mov r4,r2   \
    __asm   xor r2,r1   \
    __asm   and r1,r2   \
    __asm   xor r1,r0   \
    __asm   and r0,r4   \
    __asm   xor r4,r3   \
    __asm   or  r3,r1   \
    __asm   xor r3,r2   \
    __asm   xor r0,r4   \
    __asm   xor r2,r0   \
    __asm   or  r0,r3   \
    __asm   xor r0,r1   \
    __asm   xor r4,r2   \
    __asm   and r2,r3   \
    __asm   or  r1,r3   \
    __asm   xor r1,r2   \
    __asm   xor r4,r0   \
    __asm   xor r2,r4   \
            }

#define sb4(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   xor r1,r3   \
    __asm   not r3      \
    __asm   xor r2,r3   \
    __asm   xor r3,r0   \
    __asm   mov r4,r1   \
    __asm   and r1,r3   \
    __asm   xor r1,r2   \
    __asm   xor r4,r3   \
    __asm   xor r0,r4   \
    __asm   and r2,r4   \
    __asm   xor r2,r0   \
    __asm   and r0,r1   \
    __asm   xor r3,r0   \
    __asm   or  r4,r1   \
    __asm   xor r4,r0   \
    __asm   or  r0,r3   \
    __asm   xor r0,r2   \
    __asm   and r2,r3   \
    __asm   not r0      \
    __asm   xor r4,r2   \
            }

#define ib4(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   mov r4,r2   \
    __asm   and r2,r3   \
    __asm   xor r2,r1   \
    __asm   or  r1,r3   \
    __asm   and r1,r0   \
    __asm   xor r4,r2   \
    __asm   xor r4,r1   \
    __asm   and r1,r2   \
    __asm   not r0      \
    __asm   xor r3,r4   \
    __asm   xor r1,r3   \
    __asm   and r3,r0   \
    __asm   xor r3,r2   \
    __asm   xor r0,r1   \
    __asm   and r2,r0   \
    __asm   xor r3,r0   \
    __asm   xor r2,r4   \
    __asm   or  r2,r3   \
    __asm   xor r3,r0   \
    __asm   xor r2,r1   \
            }

#define sb5(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   xor r0,r1   \
    __asm   xor r1,r3   \
    __asm   not r3      \
    __asm   mov r4,r1   \
    __asm   and r1,r0   \
    __asm   xor r2,r3   \
    __asm   xor r1,r2   \
    __asm   or  r2,r4   \
    __asm   xor r4,r3   \
    __asm   and r3,r1   \
    __asm   xor r3,r0   \
    __asm   xor r4,r1   \
    __asm   xor r4,r2   \
    __asm   xor r2,r0   \
    __asm   and r0,r3   \
    __asm   not r2      \
    __asm   xor r0,r4   \
    __asm   or  r4,r3   \
    __asm   xor r2,r4   \
            }

#define ib5(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   not r1      \
    __asm   mov r4,r3   \
    __asm   xor r2,r1   \
    __asm   or  r3,r0   \
    __asm   xor r3,r2   \
    __asm   or  r2,r1   \
    __asm   and r2,r0   \
    __asm   xor r4,r3   \
    __asm   xor r2,r4   \
    __asm   or  r4,r0   \
    __asm   xor r4,r1   \
    __asm   and r1,r2   \
    __asm   xor r1,r3   \
    __asm   xor r4,r2   \
    __asm   and r3,r4   \
    __asm   xor r4,r1   \
    __asm   xor r3,r0   \
    __asm   xor r3,r4   \
    __asm   not r4      \
            }

#define sb6(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   not r2      \
    __asm   mov r4,r3   \
    __asm   and r3,r0   \
    __asm   xor r0,r4   \
    __asm   xor r3,r2   \
    __asm   or  r2,r4   \
    __asm   xor r1,r3   \
    __asm   xor r2,r0   \
    __asm   or  r0,r1   \
    __asm   xor r2,r1   \
    __asm   xor r4,r0   \
    __asm   or  r0,r3   \
    __asm   xor r0,r2   \
    __asm   xor r4,r3   \
    __asm   xor r4,r0   \
    __asm   not r3      \
    __asm   and r2,r4   \
    __asm   xor r2,r3   \
            }

#define ib6(r0,r1,r2,r3,r4) \
    __asm   {           \
    __asm   xor r0,r2   \
    __asm   mov r4,r2   \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -