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

📄 crijndael.java

📁 AES C++加密解密和java版加密解密方法
💻 JAVA
字号:
package com.ss;



	public class CRijndael {

		public int ECB = 0, CBC = 1, CFB = 2;

		private int DEFAULT_BLOCK_SIZE = 16;
		int MAX_BLOCK_SIZE = 32, MAX_ROUNDS = 14, MAX_KC = 8, MAX_BC = 8;
		private   int sm_alog[] = new int[256];
		private   int sm_log[] = new int[256];
		private   char sm_S[] = new char[256];
		private   char sm_Si[] = new char[256];
		private   int sm_T1[] = new int[256];
		private   int sm_T2[] = new int[256];
		private   int sm_T3[] = new int[256];
		private   int sm_T4[] = new int[256];
		private   int sm_T5[] = new int[256];
		private   int sm_T6[] = new int[256];
		private   int sm_T7[] = new int[256];
		private   int sm_T8[] = new int[256];
		private   int sm_U1[] = new int[256];
		private   int sm_U2[] = new int[256];
		private   int sm_U3[] = new int[256];
		private   int sm_U4[] = new int[256];
		private   char sm_rcon[] = new char[30];
		private   int sm_shifts[][][] = new int[3][4][2];
		// Error Messages
		private  String[] sm_szErrorMsg1;
		private  String[] sm_szErrorMsg2;
		public   char sm_chain0[];
		// Key Initialization Flag
		boolean m_bKeyInit = false;
		// Encryption (m_Ke) round key
		int m_Ke[][] = new int[MAX_ROUNDS + 1][MAX_BC];
		// Decryption (m_Kd) round key
		int m_Kd[][] = new int[MAX_ROUNDS + 1][MAX_BC];
		// Key Length
		int m_keylength;
		// Block Size
		int m_blockSize;
		// Number of Rounds
		int m_iROUNDS;
		// Chain Block
		char m_chain0[] = new char[MAX_BLOCK_SIZE];
		char m_chain[] = new char[MAX_BLOCK_SIZE];
		// Auxiliary private use buffers
		int tk[] = new int[MAX_KC];
		int a[] = new int[MAX_BC];
		int t[] = new int[MAX_BC];

		// Auxiliary Functions
		// Multiply two elements of GF(2^m)
		int Mul(int a, int b) {
			return (a != 0 && b != 0) ? sm_alog[(sm_log[a & 0xFF] + sm_log[b & 0xFF]) % 255]
					: 0;
		}

		// Convenience method used in generating Transposition Boxes
		int Mul4(int a, char b[]) {
			if (a == 0)
				return 0;
			a = sm_log[a & 0xFF];
			int a0 = (b[0] != 0) ? sm_alog[(a + sm_log[b[0] & 0xFF]) % 255] & 0xFF
					: 0;
			int a1 = (b[1] != 0) ? sm_alog[(a + sm_log[b[1] & 0xFF]) % 255] & 0xFF
					: 0;
			int a2 = (b[2] != 0) ? sm_alog[(a + sm_log[b[2] & 0xFF]) % 255] & 0xFF
					: 0;
			int a3 = (b[3] != 0) ? sm_alog[(a + sm_log[b[3] & 0xFF]) % 255] & 0xFF
					: 0;
			return a0 << 24 | a1 << 16 | a2 << 8 | a3;
		}

		public  CRijndael() {

		}

		// DESTRUCTOR

		// Expand a user-supplied key material into a session key.
		// key - The 128/192/256-bit user-key to use.
		// chain - initial chain block for CBC and CFB modes.
		// keylength - 16, 24 or 32 bytes
		// blockSize - The block size in bytes of this Rijndael (16, 24 or 32
		// bytes).
		public void MakeKey(char key[], char chain[], int keylength, int blockSize) {
			keylength = DEFAULT_BLOCK_SIZE;
			blockSize = DEFAULT_BLOCK_SIZE;
		}

		// Auxiliary Function
		private void Xor(char buff, char chain[])
		{
			if(false==m_bKeyInit);
			for(int i=0; i<m_blockSize; i++){
				
				buff ^= chain[i];
			}
				
				//*(buff++) ^= *(chain++);	
		}

		// Convenience method to encrypt exactly one block of plaintext,
		// assuming
		// Rijndael's default block size (128-bit).
		// in - The plaintext
		// result - The ciphertext generated from a plaintext using the key
		void DefEncryptBlock(char in[], char result[]) {};

		// Convenience method to decrypt exactly one block of plaintext,
		// assuming
		// Rijndael's default block size (128-bit).
		// in - The ciphertext.
		// result - The plaintext generated from a ciphertext using the session
		// key.
		void DefDecryptBlock(char in[], char result[]) {
		};

		// Encrypt exactly one block of plaintext.
		// in - The plaintext.
		// result - The ciphertext generated from a plaintext using the key.
		public void EncryptBlock(char in[], char result[]) {
		};

		// Decrypt exactly one block of ciphertext.
		// in - The ciphertext.
		// result - The plaintext generated from a ciphertext using the session
		// key.
		void DecryptBlock(char in[], char result[]) {
		};

		void Encrypt(char in[], char result[], long n, int iMode) {
			iMode = ECB;

		}

		void Decrypt(char in[], char result[], long n, int iMode) {
			iMode = ECB;
		}

		// Get Key Length
		int GetKeyLength() {
			if (false == m_bKeyInit);
			return m_keylength;
		}

		// Block Size
		int GetBlockSize() {
			if (false == m_bKeyInit);
			return m_blockSize;
		}

		// Number of Rounds
		int GetRounds() {
			if (false == m_bKeyInit);
			return m_iROUNDS;
		}

		void ResetChain() {
			System.arraycopy(m_chain, CBC, m_chain0, m_blockSize, CBC);
		}

	}

⌨️ 快捷键说明

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